0

次のことができる新しい変数を作成したいと思います。

Variable v1 = 1;
Variable v2 = "Test";
Variable v3 = 7.31;

これは可能ですか、それとも不可能ですか?

4

2 に答える 2

2

自動ボクシング (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

于 2012-09-02T13:54:44.503 に答える
0

可能です。以下のコードを確認してください。

    Object a;
    Object b;
    Object c;

    a = 1;
    b = "abc";
    c = 1.72d;

または別の方法:

    Object a;

    a = 1;
    a = "abc";
    a = 1.72d;

この場合、値が適切なオブジェクト型にラップされると、オートボクシングが観察されます。

クラスはすべての Java オブジェクトの親であるため、前述Objectのようにコーディングする方法があります。

于 2012-09-02T13:56:34.693 に答える