У меня есть такой код:
protected <T> T doSomething(String someParam, Class<T> clazz) {
...
}
, который я использую в классе TestCase:
Class clazz = MyClass.class;
MyClass MyClass = someObject.doSomething(someString, clazz);
Этот код выдает предупреждение при затмении :
Класс является необработанным типом. Ссылки на универсальный тип Class должны быть параметризованы
и
Несколько маркеров в этой строке
- Безопасность типов: непроверенный вызов doSomething (String, Class) универсального метода doSomething (String, Class) типа MyClass
- Безопасность типов: для выражения типа Class требуется непроверенное преобразование для соответствия Class
Когда я запускаю этот код (тест) в Eclipse - все работает отлично. Когда я делаю это через «mvn clean install» через командную строку , я получаю:
C: \ pathToProject \ src \ test \ java \ packagesPath \ MyTestCase.java: [xx, xxx] найдено несовместимых типов:
java.lang.Object
обязательно: com.somePackagePath.MyClass
Но при предоставлении:
Class<MyClass> clazz = MyClass.class;
MyClass MyClass = someObject.doSomething(someString, clazz);
Я не получаю ни ошибок, ни предупреждений. .
Я понимаю, что компилятор Java стирает информацию о типе , поэтому:
Не должно ли eclipse выдавать ошибку компилятора вместо предупреждения, или это maven-plugin-compiler, который создает проблему?
Плагин Maven это:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<showDeprecation>false</showDeprecation>
<debug>true</debug>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
С уважением,
Деспот