这样的事情是我想要实现的目标:
public Attribute<?> getAttribute(Class<? extends Attribute> attributeClass){
for(Attribute attribute: attributes)
if(attributeClass.isInstance(attribute)) return attributeClass.cast(attribute);
return null;
}
其中属性&lt; ?&GT;显然是不正确的部分。
我希望这个方法的返回类型是attributeClass,但我似乎无法弄清楚如何得到它。我应该注意到我知道我可以使用Attribute作为返回类型,但是这种方法通常以这种方式调用:
AttributeType1 attributeType1 = getAttribute(AttributeType1.class);
......我试图避免每次都要施展。
帮助表示赞赏。
答案 0 :(得分:14)
这就是你需要的
public <T extends Attribute> T getAttribute(Class<T> attributeClass){
您需要在返回类型
之前指定泛型类型答案 1 :(得分:4)
public <T extends Attribute> T getAttribute(Class<T> attributeClass) {
应该有效