ジェネリックメソッドは、メソッドの引数をメソッド呼び出しの際に決められるメソッドのことです。ジェネリッククラスとは独立したものなので、混同しないように注意してください。
たとえば以下は、Arraysクラス(java.utilパッケージ)のコードを抜粋したものです。copyOfメソッドは、与えられた配列をコピーするためのメソッドです。
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
@SuppressWarnings("unchecked")
T[] copy = ((Object)newType == (Object)Object[].class)
? (T[]) new Object[newLength]
: (T[]) Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
ジェネリックメソッドでは、戻り値の直前に<…>の形式で型パラメータを宣言します。宣言された型パラメータは、戻り値型や引数型として利用できます。
ジェネリックメソッドは、通常のメソッドと同じく以下のように呼び出せます。
- var data = new String[] { "X", "Y", "Z" };
- var result = Arrays.copyOf(data, 3); // 結果:[X, Y, Z]
また、メソッドの前に明示的に型を指定することもできます。
- var result = Arrays.<String>copyOf(data, 3);
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。