我正在努力实现以下目标:

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){

您需要在返回类型之前指定通用类型

10-05 22:55