java - 泛型参数的实例

标签 java loops generics instanceof

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

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

非常感谢您的回答和拼写检查^^

最佳答案

由于类型删除,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);

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

关于java - 泛型参数的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60627175/

相关文章:

android - 如何在 Android 上每 5 秒循环或执行一个函数

Javascript 实时循环数组

python - 根据我的列表输入重命名最后一个

c# - C#泛型类型中静态字段的初始化

java - 检查 REST 响应是否包含空列表

java - 从 @ActionMapping 重定向,不调用毫无意义的 @RenderMapping

java - 无法生成一排敌人,仅生成一个敌人 :\

java - META-INF 中的 Maven pom.xml 与 Maven 存储库中的 pom.xml

c# - 将通用指针传递给 C# 中的方法

Java 泛型类方法覆盖