实现除类签名以外的接口

时间:2013-07-18 02:42:00

标签: java generics interface

比方说,我想在jar库中对一些类进行分组,这些类都符合我的自定义接口的定义。由于我无法编辑jar中的类来实现我的接口,有没有其他方法可以使用这些类,就好像它们实现了我的接口一样?

示例:我有不可编辑的课程AB。我在另一个类中有一个静态方法,它接受属于我的接口I的对象。如何在不使方法接受所有A对象的情况下传递BObject个对象。我想提供AB新功能

3 个答案:

答案 0 :(得分:1)

使用Adapter设计模式https://en.wikipedia.org/wiki/Adapter_pattern。从库中创建一个类的包装器,使包装器实现你的接口,使包装器使用该类的方法。

答案 1 :(得分:1)

从编辑开始,根据我的评论:创建一个将实现您的接口I的类,并作为类A和B的包装器。这是Facade Design Pattern。这是代码中一个非常基本的简单示例:

public interface I {
    void methodFromExternalAClass();
    void methodFromExternalBClass();
}

public class MyClass implements I {
    @Override
    public void methodFromExternalAClass() {
         new A().someMethod();
    }
    @Override
    public void methodFromExternalBClass() {
         new B().someMethod();
    }
}

答案 2 :(得分:0)

如果你想要的是识别给定的类是否在一组类中,类似于使用标记接口,你可以保留一个Class对象的列表并参考该列表以查看是否有特定的class在你的分组中。如果这不是你想要的,请澄清。我会评论澄清,但我没有声誉。