В моем проекте у меня есть фабричный метод, который загружает объект, который реализует интерфейс. Вы проходите в классе, который хотите, и получаете его, как это.Почему мой общий метод перестает работать?
public class Factory {
public static <E extends SomeInterface> E load(Class<E> clss) throws Exception {
return clss.newInstance();
}
}
Вы можете вызвать его так:
MyObject obj = Factory.load(MyObject.class);
Этот код прекрасно работает в Eclipse 3.4 с Java 6u13, однако сегодня я получил новый ноутбук и установлен Eclipse 3.5 и Java 6u15 и теперь я все чаще возникают несоответствия типов.
MyObject obj = Factory.load(MyObject.class);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Type mismatch: cannot convert from SomeInterface to MyObject
Положив бросок до того завода на этой линии делает его уйти, и все работает хорошо, но это делает линию немного менее чистым, и мне не нужно это раньше, так что это дает?
Единственное, что я могу думать о том, чтобы проверить затмение соответствие уровня компиляции. Убедитесь, что он установлен на 1.6, возможно, по какой-то причине он по умолчанию не соответствует предыдущей версии. – amischiefr
Мое соответствие - это, безусловно, 1.6 - до сих пор нет кубиков. – banjollity
Does MyObject реализует SomeInterface? –