2014-02-21 2 views
1

Когда я использую этот кодили небезопасных операций при получении экземпляра java.lang.Class

Class clm = itt.apa.labs.Message.class; 

if (!(clm.isAssignableFrom(cl))) { 
    System.out.println("Class not implements Message!"); 
    System.exit(1); 
} 

Я-де этот результат, говорящий:

[javac] Note: /.../Step5.java uses unchecked or unsafe operations. 
[javac] Note: Recompile with -Xlint:unchecked for details. 

Но когда я делаю это:

if (!(itt.apa.labs.Message.class.isAssignableFrom(cl))) { 
    System.out.println("Class not implements Message!"); 
    System.exit(1); 
} 

У меня нет никаких примечаний.

Я уже кое-что прочитал о дженериках, но я не понял, почему это происходит в этом случае.

Любая помощь? Может ли кто-нибудь объяснить мне, почему?

+0

запросить компилятор для ответа с помощью 'javac -Xlint: unchecked filename.java' – Rembo

ответ

1
Class clm 

должен быть

Class<itt.apa.labs.Message> clm 

Класс представляет собой универсальный тип, и вы используете его в качестве сырьевого типа.

+0

Ok! Большое спасибо JB Nizet. Теперь я понимаю, имеет смысл. – Mario

Смежные вопросы