我有几个类:
public class SubclassA extends ClassA implements InterfaceA
public class SubclassB extends ClassB implements InterfaceA
public class SubclassC extends ClassC implements InterfaceA..。
有没有可能将所有的函数调用重定向到你可以在接口中找到的其他类/对象的函数?
表示如果这就是接口:
public interface InterfaceA{
public void doIt();
}这就是HelperClass:
public class HelperClass implements InterfaceA{
public void doIt(){
...
}
}是否可以将类SubclassA、SubclassB、SubclassC等的所有调用重定向到HelperClass的doIt()函数?(Ofc不需要将调用写到每个函数的每个实现中),或者如果没有办法,你知道一种让eclipse实现的方法吗?有很多类我需要编写相同的……
如果有人能教我怎么做,我会很高兴的。提前谢谢。
发布于 2013-09-09 01:13:08
你可以使用一个抽象类来实现,也可以等待Java8。在那里,我们得到了接口的default实现。请参阅:http://blog.hartveld.com/2013/03/jdk-8-13-interface-default-method.html
在更复杂的应用程序中,您可以使用Aspect Oriented Programming (aop)实现这一点。但我想这不是你的选择。
发布于 2013-09-09 01:14:50
创建一个实现InterfaceA接口的抽象类,基本上使您的HelperClass抽象
public abstract class HelperClass implements InterfaceA {
public void doIt(){
... // do it
reallyDoIt();
}
public abstract void reallyDoIt();
}然后让您的类扩展HelperClass。
回答
是否可以重定向所有呼叫
不,这不可能。您只能对在abstract父类中显式实现的接口上的方法执行此操作。
另一种解决方案是使用Aspect Oriented Programming拦截来自任何类的所有方法调用。这个主题比较高级,所以如果你感兴趣的话,我建议你去查一查。我越想越觉得AOP是适合你的方式。
看看at this answer吧。
发布于 2013-09-09 01:15:03
在Java8中将会有一个叫做default methods的特性。这基本上意味着接口可以提供它声明的方法的默认实现。
您可以在此处找到此功能的解释:
http://www.angelikalanger.com/Lambdas/LambdaTutorial/lambdatutorial_5.html
https://stackoverflow.com/questions/18686374
复制相似问题