Java 泛型 - 获取返回与第一个参数相同类型的方法

标签 java generics types return return-type

这就是我想要实现的目标:

public Attribute<?> getAttribute(Class<? extends Attribute> attributeClass){
  for(Attribute attribute: attributes)
    if(attributeClass.isInstance(attribute)) return attributeClass.cast(attribute);
  return null;
}

Attribute< ?> 显然是不正确的部分。

我希望此方法的返回类型为 attributeClass,但我似乎无法弄清楚如何获得它。我应该注意,我知道我可以只使用 Attribute 作为返回类型,但是这个方法主要以这种方式调用:

AttributeType1 attributeType1 = getAttribute(AttributeType1.class);

...我正在努力避免每次都必须转换。

感谢帮助。

最佳答案

这就是你想要的

public <T extends Attribute> T getAttribute(Class<T> attributeClass){

需要在返回类型前指定泛型

关于Java 泛型 - 获取返回与第一个参数相同类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287407/

相关文章:

c# - 使用类型转换包装 Expression<Func<T,bool>>

php - mysql中的longblob和longtext有什么区别?

python - typing 模块中的什么类型描述了一个类?什么类型描述了一个函数?

haskell - 异构列表的笛卡尔积

java - 是什么导致我的java代码的这部分出现空指针异常?

用于 MS Exchange 2007 的 Java MAPI

java - 为什么我的 JSlider 或 JLabel 不会出现在框架上的任何位置?

c# - 动态使用泛型是不可能的吗?

java - Class<T> 怎么可能是通用的?

java - 将带逗号的字符串值转换为具有正确区域设置的十进制