ラッパークラスとラッパーオブジェクトとは?
JavaやPythonでよく使われるプログラミングの基本概念であるラッパークラスとラッパーオブジェクトは、プリミティブ型の値をオブジェクトとして扱うためのものです。
Javaでは、プリミティブ型としてintやfloat、booleanなどがありますが、これらはオブジェクトではありません。一方、ラッパークラスは、intをInteger、floatをFloat、booleanをBooleanなどに変換することで、これらの値をオブジェクトとして扱うことができます。同様に、Pythonではintをint、floatをfloat、boolをboolなどに変換することができます。
プログラミングでの利用方法
ラッパークラスとラッパーオブジェクトは、主に以下のような場面で利用されます。
1. ジェネリックス
ジェネリックスとは、コレクションなどのオブジェクトに含まれる要素の型を指定するための機能です。ラッパークラスを利用することで、プリミティブ型をジェネリックスに指定することができます。
例えば、以下のようなコードがあります。
“`java
List list = new ArrayList();
“`
このコードはコンパイルエラーになりますが、ラッパークラスを利用することで、以下のように書くことができます。
“`java
List list = new ArrayList();
“`
2. 文字列の変換
プリミティブ型の値を文字列に変換する場合、ラッパーオブジェクトを利用することができます。例えば、以下のようなコードがあります。
“`java
int i = 100;
String str = “” + i;
“`
このコードは文字列として”100″を生成しますが、ラッパーオブジェクトを利用することで、以下のように書くことができます。
“`java
int i = 100;
String str = Integer.toString(i);
“`
3. メソッドパラメータ
Javaでは、メソッドに引数を渡す際に、引数の型がプリミティブ型の場合、値渡しであるため、メソッド内で値を変更しても呼び出し元の変数には反映されません。一方、ラッパーオブジェクトを使用することで、参照渡しとなり、値を変更することができます。
例えば、以下のようなコードがあります。
“`java
public void add(int a, int b) {
a = a + 1;
b = b + 1;
}
int x = 1;
int y = 2;
add(x, y);
System.out.println(x); // 1
System.out.println(y); // 2
“`
このコードでは、addメソッド内でaとbの値を変更していますが、呼び出し元のxとyには反映されません。一方、ラッパーオブジェクトを使用することで、以下のように書くことができます。
“`java
public void add(Integer a, Integer b) {
a = a + 1;
b = b + 1;
}
Integer x = 1;
Integer y = 2;
add(x, y);
System.out.println(x); // 2
System.out.println(y); // 3
“`
まとめ
ラッパークラスとラッパーオブジェクトは、プリミティブ型をオブジェクトとして扱うためのものであり、JavaやPythonでよく使われる基本的な概念です。ジェネリックスや文字列の変換、メソッドパラメータの扱いなど、様々な場面で利用されます。プログラミングをする上で、しっかりと理解しておくことが重要です。