У меня есть метод, который возвращает компонент (объект, который расширяет компонент интерфейс) экземпляр по типу (классу).Непроверенные дженерики или бокс объекта?
Каков наилучший или правильный способ возврата компонента? Использование нечетных генериков или возвращаемого компонента как Компонент. Или есть лучший способ, чем эти два я узнал? На самом деле я хотел бы получить компонент по типу возврата, указанному в инструкции (например, ConcreteComponent cc = this.getComponent();
);
@SuppressWarnings("unchecked")
public <T> T getComponent(final Class<? extends T> type) {
for (Component c : this.components) {
if (c.getClass().isAssignableFrom(type)) { return (T) c; }
}
return null;
}
public Component getComponent2(final Class<? extends Component> type) {
for (Component c : this.components) {
if (c.getClass().isAssignableFrom(type)) { return c; }
}
return null;
}
'type.isAssignableFrom (c.getClass())' также может быть 'type.isInstance (c)'. – Radiodef
@Radiodef - хорошая точка и 'isInstance()', вероятно, лучший выбор для этого, но это не позволяет мне исправить использование Mato 'isAssignableFrom()'. –