私はこのようなコードを持っています:
protected <T> T doSomething(String someParam, Class<T> clazz) {
...
}
TestCaseクラスで使用します。
Class clazz = MyClass.class;
MyClass MyClass = someObject.doSomething(someString, clazz);
このコードはEclipseで警告を出します:
クラスはrawタイプです。ジェネリック型クラスへの参照はパラメーター化する必要があります
と
この行の複数のマーカー
-タイプセーフティ:タイプMyClassの汎用メソッドdoSomething(String、Class)のチェックされていない呼び出しdoSomething(String、Class)
-タイプセーフティ:タイプクラスの式は、クラスに準拠するためにチェックされていない変換が必要です
このコード(テスト)をEclipseで実行すると、すべてが完全に機能します。コマンドプロンプトから「mvncleaninstall」を実行すると、次のようになります。
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>
よろしく、
デスポット