2020年01月16日
Java ジェネリックス(ジェネリクス)
ジェネリックス(ジェネリクス)は、<>で囲んだ型名を
クラスやメソッドに付加して定義することで
汎用的なクラスをコンパイルする時に特定の型に対応させるための機能。
通常は使用目的や意味を表すTypeやElementの頭文字T、Eを用います。
難しいことは抜きにして書くことこんな感じになります。
class Demo<T>{
private T value;
//コンストラクタ
Demo(T val){
this.value = val;
}
//値の設定
public void setValue(T val) {
this.value = val;
}
//値の取得
public T getValue() {
return value;
}
}
class Example{
public static void main(String[] args) {
Demo<String> d1 = new Demo<String>("こんにちは");
System.out.println(d1.getValue());
d1.setValue("文字列");
System.out.println(d1.getValue());
Demo<Integer> d2 = new Demo<<nteger>(987654);
System.out.println(d2.getValue());
d2.setValue(123456);
System.out.println(d2.getValue());
}
}
===== 実行結果 =====
こんにちは
文字列
987654
123456
====================
DemoのTは、Demoをインスタンス化する時に指定した型になります。
String型であっても、Integer型であってもキャスト(型変換)が不要で
指定した型の値を設定・取得することができるようになります。
† 地球の末路!? †
クラスやメソッドに付加して定義することで
汎用的なクラスをコンパイルする時に特定の型に対応させるための機能。
通常は使用目的や意味を表すTypeやElementの頭文字T、Eを用います。
難しいことは抜きにして書くことこんな感じになります。
class Demo<T>{
private T value;
//コンストラクタ
Demo(T val){
this.value = val;
}
//値の設定
public void setValue(T val) {
this.value = val;
}
//値の取得
public T getValue() {
return value;
}
}
class Example{
public static void main(String[] args) {
Demo<String> d1 = new Demo<String>("こんにちは");
System.out.println(d1.getValue());
d1.setValue("文字列");
System.out.println(d1.getValue());
Demo<Integer> d2 = new Demo<<nteger>(987654);
System.out.println(d2.getValue());
d2.setValue(123456);
System.out.println(d2.getValue());
}
}
===== 実行結果 =====
こんにちは
文字列
987654
123456
====================
Demo
String型であっても、Integer型であってもキャスト(型変換)が不要で
指定した型の値を設定・取得することができるようになります。
† 地球の末路!? †
【このカテゴリーの最新記事】
-
no image
-
no image
posted by 得ナビ8!おまんこっちんこうし at 00:00
| プログラミング(Java)