Javaがジェネリック型の引数を使用して単純な汎用メソッドをコンパイルできない理由を理解しようと、ほとんどの時間を費やしましたが、基本的に、私はSpringApplicationContextと呼ばれるクラスの静的メソッドとしてSpringコンテキスト操作を暴露しています:私は、同じパッケージ内のユニットテストから、それを呼び出すとJavaコンパイラでタイプ引数を持つ汎用メソッドが見つかりません
public static <T> List<T> listBeansOfType(Class<T> type)
{
return new ArrayList<T>(context.getBeansOfType(type).values());
}
、それが動作します。テストコールは次のとおりです。
List<DomainRepo> repos =
SpringApplicationContext.listBeansOfType(DomainRepo.class);
ただし、別のパッケージのコードから呼び出すと、まったく同じコードが失敗します。コンパイラは、シンボルlistBeansOfType(java.lang.Class)を見つけることができないと言います。クラスをインポートしましたが、メソッドに対して静的インポートは行っていません。
私が書いたこのコードは、一週間前に働いたという事実もあります。それ以来、リリースプロセスを進めていくうちに、私はそれをすべて脇に置かなければなりませんでした。 Java 1.6を使用してmavenまたはEclipseでコンパイルすると、同じエラーが発生します。どんなヒントも大歓迎です。
このクラスは公開されていますか? –