Seta Mamikoさん❣
JavaのGenericsについて教えてください。
ジェネリクス(Generics)は、Javaをはじめとする多くのオブジェクト指向型言語で採用されている仕組みです。この仕組みは、オブジェクトの型の安全性と再利用性を兼ね備えています。具体的には、クラスやメソッド、インターフェースの中で利用される値の型を後から設定できる仕組みです。
ジェネリクスのメリットとしては、以下の点が挙げられます:
– 汎用的なクラスの定義: 型を限定しないため、汎用的なクラスを定義できます。
– 型安全性の確保: クラスを利用する際に利用者自身で型安全を確保できます。
一方、ジェネリクスの注意点としては、以下の点があります:
– 基本データ型の利用不可: intなどの基本データ型はジェネリクスの型に利用できません。
– ジェネリクスを用いたクラスの配列は作成できない: 配列の型は実行時に決まるため、ジェネリクスとは相性が悪いです。
– Throwableの子孫クラスではジェネリクスを用いることができない: 例外クラスにはジェネリクスを使えない制約があります。
具体的なコード例を見てみましょう。以下はジェネリクスを使ったクラスの例です:
// このクラスではEの型は利用する際に決めることする
public class Generics<E> {
private E obj;
public Generics(E obj) {
this.obj = obj;
}
public E getObj() {
return obj;
}
}
class Main {
public static void main(String[] args) {
// 利用する際にEをStringとして利用することに決める
Generics<String> generics = new Generics<>(“2021”);
String obj = generics.getObj();
System.out.println(obj); // 出力結果:2021
}
}
同じことをジェネリクスを使わずにObject型で行うと、キャストが面倒くさいだけでなく、誤ったキャストによるエラーの危険性があります。ジェネリクスを利用することで、型安全性を高めることができます。