Java generics - получение метода для возврата того же типа, что и первый параметр

Что-то вроде этого, чего я пытаюсь достичь:

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

где атрибут <? > , очевидно, является неправильной частью.

Я хочу, чтобы возвращаемый тип этого метода имел атрибутClass, но я не могу понять, как это получить. Я должен отметить, что я знаю, что я мог бы просто использовать атрибут как возвращаемый тип, но этот метод будет в основном вызываться следующим образом:

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

должен работать