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

2022-09-04 08:06:59

像这样的东西是我试图实现的:

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

其中属性< ? >显然是不正确的部分。

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

AttributeType1 attributeType1 = getAttribute(AttributeType1.class);

...我正在努力避免每次都必须投掷。

帮助赞赏。


答案 1

这是你需要的

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

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


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

应该工作