2010-11-18 3 views
1

Как принудительно установить тип для создания общего экземпляра?Как заставить тип создать общий экземпляр?

public class MyClass<T extends MyClass2> { /* ... */ } 

public class A extends MyClass2 { /* ... */ } 

Это должно терпеть неудачу:

MyClass myInstance = new MyClass(); 

И это должно работать:

MyClass<A> myInstance = new MyClass<A>(); 

ответ

2

Вы не можете сделать это на Java. Все общие классы имеют соответствующий необработанный тип.

Если вам случится, однако использовать Eclipse, вы можете установить его, чтобы произвести ошибку компиляции для всех видов сырья и типов:

Window -> Preferences -> Java/Compiler/Ошибки -> Generic типов -> Set «Использование необработанных типов» в «Ошибка».

1

это не представляется возможным. Если вам нужна проверка времени выполнения, лучшим вариантом является предоставление единственного конструктора, который принимает тип в качестве аргумента.

public MyClass(Class<T> type) { 
    this.type = type; 
} 
Смежные вопросы