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

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

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

... и я я пытаюсь избежать использования приведений каждый раз.

Помощь приветствуется.

11
задан Numeron 9 June 2011 в 02:20
поделиться