这就是我想要实现的目标:
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/