<T>
日本語 | 右大なりてぃー左大なり、型パラメーター |
英語 | left angle bracket T right angle bracket |
ふりがな | みぎだいなりてぃーひだりだいなり |
フリガナ | ミギダイナリティーヒダリダイナリ |
クラスやメソッドに付ける「型パラメーター」のこと。
J2SE 5.0で追加された構文。
クラス定義の際に、クラス名の右に「<T>」という「型パラメーター」を指定すると、そのクラスはジェネリッククラスとなる。
また、メソッド定義の際に、アクセス修飾子の右に「<T>」という「型パラメーター」を指定すると、そのメソッドはジェネリックメソッドとなる。
つまり、「<T>」を付けることでクラスやメソッドがジェネリッククラスやジェネリックメソッドになるということである。
逆に言えば、「<T>」が付いているクラスはジェネリッククラスであり、「<T>」が付いているメソッドはジェネリックメソッドということである。
「<T>」の「T」は、使用時に特定の型へ置き換えることができる特殊な型となる。
別に「T」である必要はなく、識別子と同じルールで任意の単語を使用できる。ただ、慣例的に「T」から始まるアルファベット大文字1文字を使用することが多い。
また、複数の型を使用する場合には「<T,U,V>」のようにカンマ区切りで記述する。
J2SE 5.0で追加された構文。
クラス定義の際に、クラス名の右に「<T>」という「型パラメーター」を指定すると、そのクラスはジェネリッククラスとなる。
また、メソッド定義の際に、アクセス修飾子の右に「<T>」という「型パラメーター」を指定すると、そのメソッドはジェネリックメソッドとなる。
つまり、「<T>」を付けることでクラスやメソッドがジェネリッククラスやジェネリックメソッドになるということである。
逆に言えば、「<T>」が付いているクラスはジェネリッククラスであり、「<T>」が付いているメソッドはジェネリックメソッドということである。
「<T>」の「T」は、使用時に特定の型へ置き換えることができる特殊な型となる。
別に「T」である必要はなく、識別子と同じルールで任意の単語を使用できる。ただ、慣例的に「T」から始まるアルファベット大文字1文字を使用することが多い。
また、複数の型を使用する場合には「<T,U,V>」のようにカンマ区切りで記述する。
参考サイト
- (参考サイトはありません)
// Sample.java
/**
* ジェネリッククラスの例1。
*/
// ↓↓これのこと。
class GenericClass<T>
{
}
/**
* ジェネリックメソッドを持つクラス。
*/
class HasGenericMethod
{
/**
* ジェネリックメソッドの例。
*/
// ↓↓これのこと。
public <T> void genericMethod( T t )
{
}
}
/**
* ジェネリッククラスの例2。
*/
// ちなみに↓↓別に「T」じゃなくても構いません。
class GenericClassABC<ABC>
{
// ↓↓ABCが指定した型に置き換わります。
public ABC data;
}
/**
* ジェネリッククラスの例3。
*/
// 複数ある場合↓↓↓はT,U,V...となる事が多いです。
class GenericClass3<T,U,V>
{
public T data1;
public U data2;
public V data3;
}
public class Sample
{
public static void main( String[] args )
{
// ジェネリッククラスの例。
// ↓↓↓こうすればTがStringになります。
GenericClass<String> generic1 = new GenericClass<String>();
// ジェネリックメソッドの例。
HasGenericMethod genericMethod = new HasGenericMethod();
String string = "あいうえお";
// こうすれば↓↓↓TがStringになります。
genericMethod.genericMethod( string );
// ↓↓↓こうすればTがObjectになります。
genericMethod.<Object>genericMethod( string );
// ジェネリッククラスの例2。
// ↓↓↓こうすればABCがStringになります。
GenericClassABC<String> generic2 = new GenericClassABC<String>();
// ジェネリッククラスの例3。
// TにString、UにInteger、VにBooleanを当てはめます。
GenericClass3<String, Integer, Boolean> generic3
= new GenericClass3<String, Integer, Boolean>();
generic3.data1 = "あいうえお";
generic3.data2 = new Integer( 100 );
generic3.data3 = new Boolean( true );
}
}
/**
* ジェネリッククラスの例1。
*/
// ↓↓これのこと。
class GenericClass<T>
{
}
/**
* ジェネリックメソッドを持つクラス。
*/
class HasGenericMethod
{
/**
* ジェネリックメソッドの例。
*/
// ↓↓これのこと。
public <T> void genericMethod( T t )
{
}
}
/**
* ジェネリッククラスの例2。
*/
// ちなみに↓↓別に「T」じゃなくても構いません。
class GenericClassABC<ABC>
{
// ↓↓ABCが指定した型に置き換わります。
public ABC data;
}
/**
* ジェネリッククラスの例3。
*/
// 複数ある場合↓↓↓はT,U,V...となる事が多いです。
class GenericClass3<T,U,V>
{
public T data1;
public U data2;
public V data3;
}
public class Sample
{
public static void main( String[] args )
{
// ジェネリッククラスの例。
// ↓↓↓こうすればTがStringになります。
GenericClass<String> generic1 = new GenericClass<String>();
// ジェネリックメソッドの例。
HasGenericMethod genericMethod = new HasGenericMethod();
String string = "あいうえお";
// こうすれば↓↓↓TがStringになります。
genericMethod.genericMethod( string );
// ↓↓↓こうすればTがObjectになります。
genericMethod.<Object>genericMethod( string );
// ジェネリッククラスの例2。
// ↓↓↓こうすればABCがStringになります。
GenericClassABC<String> generic2 = new GenericClassABC<String>();
// ジェネリッククラスの例3。
// TにString、UにInteger、VにBooleanを当てはめます。
GenericClass3<String, Integer, Boolean> generic3
= new GenericClass3<String, Integer, Boolean>();
generic3.data1 = "あいうえお";
generic3.data2 = new Integer( 100 );
generic3.data3 = new Boolean( true );
}
}
// Sample.java /** * ジェネリッククラスの例1。 */ // ↓↓これのこと。 class GenericClass<T> { } /** * ジェネリックメソッドを持つクラス。 */ class HasGenericMethod { /** * ジェネリックメソッドの例。 */ // ↓↓これのこと。 public <T> void genericMethod( T t ) { } } /** * ジェネリッククラスの例2。 */ // ちなみに↓↓別に「T」じゃなくても構いません。 class GenericClassABC<ABC> { // ↓↓ABCが指定した型に置き換わります。 public ABC data; } /** * ジェネリッククラスの例3。 */ // 複数ある場合↓↓↓はT,U,V...となる事が多いです。 class GenericClass3<T,U,V> { public T data1; public U data2; public V data3; } public class Sample { public static void main( String[] args ) { // ジェネリッククラスの例。 // ↓↓↓こうすればTがStringになります。 GenericClass<String> generic1 = new GenericClass<String>(); // ジェネリックメソッドの例。 HasGenericMethod genericMethod = new HasGenericMethod(); String string = "あいうえお"; // こうすれば↓↓↓TがStringになります。 genericMethod.genericMethod( string ); // ↓↓↓こうすればTがObjectになります。 genericMethod.<Object>genericMethod( string ); // ジェネリッククラスの例2。 // ↓↓↓こうすればABCがStringになります。 GenericClassABC<String> generic2 = new GenericClassABC<String>(); // ジェネリッククラスの例3。 // TにString、UにInteger、VにBooleanを当てはめます。 GenericClass3<String, Integer, Boolean> generic3 = new GenericClass3<String, Integer, Boolean>(); generic3.data1 = "あいうえお"; generic3.data2 = new Integer( 100 ); generic3.data3 = new Boolean( true ); } }