我有一个抽象类UIObject,看起来如下:

public abstract class UIObject {
    private final int tabOrder;

    public UIObject(int tabOrder) {
        this.tabOrder = tabOrder;
    }

    public int getTabOrder() {
        return this.tabOrder;
    }
}


并且有些对象具有UIObject作为超类。

在某些服务类中,我还有一个方法goTo()如下所示:

public UIObject goTo(UIObject object) {

    //some fancy code here

    return object;
}


现在,我想返回已传递给函数的特定对象。 (我知道,这听起来很愚蠢,但是有一个合理的理由,相信我。)但是由于传递的对象都是UIObject的所有不同子类,因此该方法无法正常工作。

我坚信,我之前做过类似的事情,因此我认为这很容易。如我错了请纠正我。

最佳答案

假设您希望该方法的这种调用起作用:

UIObjectSub obj = goTo(new UIObjectSub());


您必须使该方法通用:

public <T extends UIObject> T goTo(T object) {
    //some fancy code here
    return object;
}


现在,如果调用该方法传递某个子类的对象,则类型参数T将被推断为该子类类型。

08-06 06:23