通用参数实例

我觉得我不得不在这里问这个问题,因为在其他地方找不到合适的答案。 我正在尝试使以下代码段在componentListList<Component>的地方工作。我知道一些解决方法,例如评论here中提到的解决方法。但是我只是想知道Java中是否存在某种表达式来检查泛型参数的instanceof而没有它的实例。我知道我也可以使用class或某种值作为它的标识符。

public <T extends Component> T getcomponent(){
        for (Component component:componentList) {
            if(component instanceof T){
                return component;
            }
        }
        return null;
    }

已经感谢您的回答和拼写检查^^

Vicson515 回答:通用参数实例

由于类型擦除,T在运行时是未知的,因此您必须传递一个参数以在运行时告诉代码T是什么。

public <T extends Component> T getComponent(Class<T> type) {
    for (Component component : componentList) {
        if (type.isInstance(component)) {
            return type.cast(component);
        }
    }
    return null;
}

然后,调用者必须提供如下参数:

Subcomponent x = getComponent(Subcomponent.class);

不幸的是,没有办法解决这个问题。

本文链接:https://www.f2er.com/2668041.html

大家都在问