首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向接口调用

重定向接口调用
EN

Stack Overflow用户
提问于 2013-09-09 01:06:01
回答 3查看 757关注 0票数 0

我有几个类:

代码语言:javascript
复制
public class SubclassA extends ClassA implements InterfaceA

public class SubclassB extends ClassB implements InterfaceA

public class SubclassC extends ClassC implements InterfaceA

..。

有没有可能将所有的函数调用重定向到你可以在接口中找到的其他类/对象的函数?

表示如果这就是接口:

代码语言:javascript
复制
public interface InterfaceA{

    public void doIt();

}

这就是HelperClass:

代码语言:javascript
复制
public class HelperClass implements InterfaceA{

    public void doIt(){
        ...
    }

}

是否可以将类SubclassA、SubclassB、SubclassC等的所有调用重定向到HelperClass的doIt()函数?(Ofc不需要将调用写到每个函数的每个实现中),或者如果没有办法,你知道一种让eclipse实现的方法吗?有很多类我需要编写相同的……

如果有人能教我怎么做,我会很高兴的。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 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)实现这一点。但我想这不是你的选择。

票数 1
EN

Stack Overflow用户

发布于 2013-09-09 01:14:50

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

代码语言:javascript
复制
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吧。

票数 0
EN

Stack Overflow用户

发布于 2013-09-09 01:15:03

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

您可以在此处找到此功能的解释:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18686374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档