比方说,我想在jar库中对一些类进行分组,这些类都符合我的自定义接口的定义。由于我无法编辑jar中的类来实现我的接口,有没有其他方法可以使用这些类,就好像它们实现了我的接口一样?
示例:我有不可编辑的课程A
和B
。我在另一个类中有一个静态方法,它接受属于我的接口I
的对象。如何在不使方法接受所有A
对象的情况下传递B
和Object
个对象。我想提供A
和B
新功能仅。
答案 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在你的分组中。如果这不是你想要的,请澄清。我会评论澄清,但我没有声誉。