リストで特定のテストを実行したい。リストには、まったく異なるクラスを含めることができます。
リストの一貫性をチェックする方法が 1 つあります。null ではなく、空ではなく、x 要素以下です。これはすべてのリストに共通です。次に、オーバーロードを使用して、各オブジェクトをテストします。
アイデアは次のようになります。
public static <T> void check(List<T> list) {
//do general checks
for (T element : list) {
check(element);
}
}
その後
public static void check(SomeType element) {...}
public static void check(SomeOtherType element) {...}
しかし、次のようなメソッドも追加する必要がありました。
public static void check(T element) {...}
そして、これは実行時に呼び出されました-特定のクラスを持つ他のメソッドではありません。クラスはまったく同じでしたが。私は明らかにいくつかのジェネリックの理解を欠いています。
ここで、一般的な方法をまったく使用せず、次の方法で解決しようとすると:
public static void check(List<SomeType> list) {...}
public static void check(List<SomeOtherType> list) {...}
コンパイラ エラー - 「メソッド check(List) には、別のメソッドと同じ消去 check(List) があります...」
それで、これに対するエレガントな解決策はありますか?別のメソッド名を使用することもできますが、それなしでどのように可能か知りたいです。
ありがとう!