次のことができる新しい変数を作成したいと思います。
Variable v1 = 1;
Variable v2 = "Test";
Variable v3 = 7.31;
これは可能ですか、それとも不可能ですか?
自動ボクシング (Java SE 5.0 以降) を利用する場合、それらObject
のすべてを (つまり、すべての Java 型の基本クラス)に格納できます。
public class foo {
static public void main(String[] params) {
Object v1 = 1;
Object v2 = "Test";
Object v3 = 7.31;
System.out.println(v1 + " " + v1.getClass().getName());
System.out.println(v2 + " " + v2.getClass().getName());
System.out.println(v3 + " " + v3.getClass().getName());
}
}
出力:
% java foo
1 java.lang.Integer
Test java.lang.String
7.31 java.lang.Double
ただし、これが必ずしも良いアイデアであるとは限りません。
上記の出力は、すべての変数がとして宣言されているにもかかわらずObject
、実際のクラス名がその型に適していることを示しています。宣言がそのように機能するのは、Javaのすべてのクラスが派生しているからです。Object
可能です。以下のコードを確認してください。
Object a;
Object b;
Object c;
a = 1;
b = "abc";
c = 1.72d;
または別の方法:
Object a;
a = 1;
a = "abc";
a = 1.72d;
この場合、値が適切なオブジェクト型にラップされると、オートボクシングが観察されます。
クラスはすべての Java オブジェクトの親であるため、前述Object
のようにコーディングする方法があります。