单一界面下的不变类

时间:2018-08-28 14:25:43

标签: java

已生成类似的类(存根):

Device.RuntimePlatform

这里不可能更改此类。 我想获得像这样的类通过通用方法实现单个接口的可能性:

class A {
    int getA() {...}
    int getB() {...}
    int getC() {...}
}

class B {
    int getA() {...}
    int getB() {...}
    int getD() {...}
}

不想使用反射API。 有人有想法以优雅的方式做到这一点吗?

1 个答案:

答案 0 :(得分:4)

您可以为每个类创建一个包装器。如果退出Escape Analysis,它甚至可能不会创建新对象。

interface SimpleAB {
    int getA();
    int getB();

    static SimpleAB wrap(A a) { return new SimpleAB() { /* delegate */ }; }
    static SimpleAB wrap(B b) { return new SimpleAB() { /* delegate */ }; }
}

这样,您可以包装AB,然后将它们视为相同。