コードが個別のデータ型セットのみをサポートしている場合は、ジェネリックを使用したくありません。元の投稿のコメントで述べたように、この状況ではオーバーロードされたメソッド呼び出しが必要です。
たとえば、文字列、整数、および倍精度浮動小数点数をサポートしているが、他のデータ型に対する特定のロジックがない状況を考えてみましょう。次のようなメソッドを定義します。
public static String execute(String s) { ... }
public static Integer execute(Integer i) { ... }
public static Double execute(Double d) { ... }
public static Object execute(Object o) { ... }
最初の 3 つのメソッドは、サポートする 3 つの個別のデータ型のロジックを定義しますが、最後のメソッドは、サポートしないその他のデータ型のロジックやエラー処理を定義します。(もちろん、これは int 型または double 型ではないプリミティブをカバーしていませんが、これは単なる例です。)
ジェネリクスは最初に Java に追加され、含まれているものを正確に把握するコレクションをサポートしました。List<String>
たとえば、リストを と宣言することで、リストが文字列のみを保持することを保証する方法でした。その後、この機能は拡張されましたが、基本的な概念は保持されていました。型 X の未知のオブジェクトを入れた場合、コンパイル時に X が何であるかがわからなくても、同じ型 X を取得するためのロジックを記述できることを保証します。アウト。(この記事は、古くなっている場合でも、興味深い読み物です。)
これは、メソッドまたはクラスに適用されるロジックが入力のデータ型に依存する場合に使用する必要があるという意味ではありません。入力データ型が問題にならない場合に使用する必要があり、不明なデータ型 X に対して一貫して同じロジックが適用されます。
tl;dr:
元の投稿では、入力パラメーターのデータ型に基づいて異なるロジックが示されていたため、ジェネリックを使用するのは適切ではありません。execute
代わりに、サポートされているデータ型に基づくメソッドのオーバーロードを使用する必要があります。