假设我的代码中已经有2个类:

class SomeOrder {
  String getOrderId() { return orderId; }
}

class AnotherOrder {
  String getOrderId() { return orderId; }
}


如何围绕这两个类创建接口,即:

interface Order {
    String getOrderId();
}


理想情况下,我将修改代码以使SomOrder implements OrderAnotherOrder implements Order,但这里要注意的是它们属于我无法控制或编辑的程序包(即它们来自外部jar)。

我的算法目前看起来像这样:

void sorter(List<SomeOrder> orders) {
    ... <custom sort logic> ...
    someOrder.getOrderId();
}

void sorter(List<AnotherOrder> orders) {
    ... <custom sort logic> ...
    someOrder.getOrderId();
}


通过一个接口,我可以编写:

void sorter(List<Order> orders) {
        ... <custom sort logic> ...
        order.getOrderId();
}

最佳答案

您可以使用适配器类:

class SomeOrderAdapter implements Order {
    private SomeOrder delegate;

    @Override
    public String getOrderId() {
        return delegate.getOrderId();
    }
}


AnotherOrder类似。

09-05 17:37