在 java 中实现接口
Implementing interface in java
我正在开发一个 java 程序,我的问题是我想编写一个通用方法来调用
具体方法就几个classes,class不知道。
例如,在正常使用中,我为 RootLayoutController class 编写了这段代码并且它有效:
RootLayoutController controller = loader.getController();
controller.setMainApp(this)
但问题是我必须写很多方法来调用它们!
所以我创建了 PageController 接口(里面有 setMainApp() )并在 RootLayoutController 和其他 classes 中实现了它;然后将方法更改为:
Object controller = loader.getController();
((PageController) controller).setMainApp(this);
但是它抛出 classcastexception 并且我对接口了解不多所以我无法调试它!
非常感谢
如果你有接口 PageController
,你可以这样做(因为 RootLayoutController
是 PageController
。):
PageController controller = loader.getController();
然后,没有必要投:
controller.setMainApp(this);
这就是接口存在的原因。
下java8、文件PageController.java(接口):
package test;
@FunctionalInterface
public interface PageController {
void setMainApp(PageController c);
}
文件PageControllerImpl.java(测试实现):
package test;
public class PageControllerImpl implements PageController {
@Override
public void setMainApp(PageController c) {
// TODO your implemenrtation
}
public static void main(String[] args) {
PageController testController = new PageControllerImpl();
testController.setMainApp(testController);
}
}
我正在开发一个 java 程序,我的问题是我想编写一个通用方法来调用 具体方法就几个classes,class不知道。
例如,在正常使用中,我为 RootLayoutController class 编写了这段代码并且它有效:
RootLayoutController controller = loader.getController();
controller.setMainApp(this)
但问题是我必须写很多方法来调用它们! 所以我创建了 PageController 接口(里面有 setMainApp() )并在 RootLayoutController 和其他 classes 中实现了它;然后将方法更改为:
Object controller = loader.getController();
((PageController) controller).setMainApp(this);
但是它抛出 classcastexception 并且我对接口了解不多所以我无法调试它! 非常感谢
如果你有接口 PageController
,你可以这样做(因为 RootLayoutController
是 PageController
。):
PageController controller = loader.getController();
然后,没有必要投:
controller.setMainApp(this);
这就是接口存在的原因。
下java8、文件PageController.java(接口):
package test;
@FunctionalInterface
public interface PageController {
void setMainApp(PageController c);
}
文件PageControllerImpl.java(测试实现):
package test;
public class PageControllerImpl implements PageController {
@Override
public void setMainApp(PageController c) {
// TODO your implemenrtation
}
public static void main(String[] args) {
PageController testController = new PageControllerImpl();
testController.setMainApp(testController);
}
}