Следующее «исправление» работало, когда я компилировал с javac
.Он также успешно скомпилирован в Eclipse.Проблема, которую я воспринимаю, заключается в том, что вы не можете создать новый объект из переменной (как, например, то, что вы сделали в вашем случае).Я не знаю, как это объяснить или подтвердить мою теорию.
/**
*
*/
package testcases;
/**
* @author The Elite Gentleman
*
*/
public class Outer<T> {
public class Inner{
}
public static <T> Outer<T>.Inner get(){
//Object o = new Object();
//return (Outer<T>.Inner)o;
return new Outer<T>().new Inner();
}
public static void main(String[] args) throws Exception {
Outer.<String>get();
}
}
По сути, поскольку Inner не является статическим вложенным классом, для его реализации, вот как вы это сделаете:
new Outer<T>().new Inner();
Кроме того, Object o = new Object();
не гарантирует, что объект o
на самом деле является экземпляром типа Inner
класса.
Обновление Мое решение помогло с созданием объекта, а не для приведения объекта к существующему объекту.Для этого у меня нет ответов (но мы разработчики, мы что-нибудь придумаем :-)).
Я могу подумать, почему бы не сделать класс Inner
статическим вложенным классом?