例如,假设我想将一些类分组到一个 jar 库中,这些类都符合我的自定义接口的定义。由于我无法编辑 jar 中的类来实现我的接口,有没有其他方法可以使用这些类,就好像它们实现了我的接口一样?
示例:我有不可编辑的类A
和B
. 我在另一个类中有一个静态方法,它接受属于我的接口的对象I
。如何在不让方法接受所有对象的情况下传入A
和对象。我想提供只有他们才能拥有的新功能。B
Object
A
B
使用Adapter
设计模式https://en.wikipedia.org/wiki/Adapter_pattern。在库中的类上创建一个包装器,使包装器实现您的接口,使包装器使用该类的方法。
根据您的编辑并基于我的评论:创建一个将实现您的接口 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();
}
}
If what you want is to identify whether a given class is in a grouping of classes, similar to using a tagging interface, you could keep a list of Class
objects and refer to that list to see if a particular class is in your grouping of classes. If that's not what you want than please clarify. I would comment for clarification, but I don't have the reputation.