1

例如,假设我想将一些类分组到一个 jar 库中,这些类都符合我的自定义接口的定义。由于我无法编辑 jar 中的类来实现我的接口,有没有其他方法可以使用这些类,就好像它们实现了我的接口一样?

示例:我有不可编辑的类AB. 我在另一个类中有一个静态方法,它接受属于我的接口的对象I。如何在不让方法接受所有对象的情况下传入A和对象。我想提供只有他们才能拥有的新功能。BObjectAB

4

3 回答 3

1

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

于 2013-07-18T02:53:06.640 回答
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();
    }
}
于 2013-07-18T02:54:31.310 回答
0

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.

于 2013-07-18T02:47:30.300 回答