2015-01-09 150 views
0

我正在开发一个java程序,我的问题是我想写一个通用方法来调用 特定方法的几个类,并且该类是未知的。在java中实现接口

例如在正常使用中我写这段代码为RootLayoutController类,它的工作原理:

RootLayoutController controller = loader.getController(); 
     controller.setMainApp(this) 

但问题是,我有写了很多方法来调用它们! 所以我创建了PageController接口(与setMainApp()里面)并在RootLayoutController和其他类中实现它;然后改变了这个方法:

Object controller = loader.getController(); 
     ((PageController) controller).setMainApp(this); 

但它抛出classcastexception和我不太了解接口,所以我不能调试它! 非常感谢

+1

为什么你找回一个对象时,你知道你需要实现'PageController'接口的东西? – Makoto 2015-01-09 20:15:49

+0

很明显,'loader.getController()'没有返回'PageController'。但是你还没有告诉我们它会返回什么,所以我不能再多说了。 – dcsohl 2015-01-09 20:16:58

+0

它返回一个类,它可能是RootLayoutController或其他类似PersonOverviewController的东西! – 2015-01-09 20:19:34

回答

0

下的Java 8,文件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);   
    } 

} 
1

如果你有一个接口PageController,你可以做(​​因为RootLayoutControllerPageController):

PageController controller = loader.getController(); 

,然后,没有必要投:

controller.setMainApp(this); 

这就是接口存在的原因。

+0

也就是说,如果'getController'实际上没有返回'Object'。 – Makoto 2015-01-09 20:20:45

+0

工作!非常感谢你,我知道我必须使用接口,因为所有这些类都在做同样的动作,但我对语法知之甚少! – 2015-01-09 20:27:31