Что-то вроде этого - то, чего я пытаюсь достичь:
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);
... и я стараюсь не каждый раз кастовать.
Помощь оценена.