0

我有几个课程:

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 做吗?有很多类我需要写相同的......

如果有人能告诉我这样做的方法,我会很高兴。提前致谢。

4

3 回答 3

1

您可以为此使用抽象类,也可以等待 Java 8。在那里我们获得default了接口的实现。见:http ://blog.hartveld.com/2013/03/jdk-8-13-interface-default-method.html

在更复杂的应用程序中,您可以使用Aspect Oriented Programming (aop)它。但我想这不是你的选择。

于 2013-09-08T17:13:07.890 回答
0

在 Java8 中会有一个名为default methods. 这基本上意味着接口可以提供它声明的方法的默认实现。

您可以在此处找到此功能的说明:

http://www.angelikalanger.com/Lambdas/LambdaTutorial/lambdatutorial_5.html

于 2013-09-08T17:15:02.647 回答
0

创建一个实现InterfaceA接口的抽象类,基本上做你的HelperClass抽象

public abstract class HelperClass implements InterfaceA {
    public void doIt(){
        ... // do it
        reallyDoIt();
    }

    public abstract void reallyDoIt();
}

然后让你的类扩展HelperClass

回答

是否有可能我重定向所有呼叫

不,这是不可能的。您只能对您在abstract父类中显式实现的接口上的方法执行此操作。

另一种解决方案是用于Aspect Oriented Programming拦截来自任何类的所有方法调用。该主题更高级,因此如果您有兴趣,我建议您查看它。我想得越多,我就越认为 AOP 是适合你的方式。

看看这个答案

于 2013-09-08T17:14:50.100 回答