0

彼の参照IDからオブジェクトを取得することは可能ですか?

次のようなオブジェクトの参照IDを含む文字列のリストを取得します。

com.test.test.business.model.Gamma@20

この参照IDからオブジェクトを取得する方法は?

これは単なる文字列であり、オブジェクト自体にキャストすることはできません

4

1 に答える 1

6

表示されるものは、オブジェクトのデフォルトのtoStringと呼ばれます。これは、それが属するクラスのFQCN(完全修飾クラス名)とオブジェクトのhashCodeの融合です。

toStringのJavaDocからの引用:

クラスObjectのtoStringメソッドは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字 `@'、およびオブジェクトのハッシュコードの符号なし16進表現で構成される文字列を返します。つまり、このメソッドは次の値に等しい文字列を返します。

 getClass().getName() + '@' + Integer.toHexString(hashCode())

つまり、この参照IDを使用してオブジェクトを取得することはできません。

オーバーライドtoStringして、より人間が読める形式の出力を提供できます。ありとなしの以下の2つのクラスを見てくださいtoString。mainメソッドを実行して、2つのprintステートメントの出力を比較してみてください。

class Person {
    private String name;

    @Override
    public String toString() {
        return "Person [name=" + this.name + "]";
    }
}

class Address {
    private String town;
}

public class Test {
    public static void main(String... args) {
        Person person = new Person();
        Address address = new Address();

        System.out.println("Person is : " + person);
        System.out.println("Address is : " + address);
    }
}

ただし、オブジェクトを永続化し、後の段階でオブジェクトを復活させる方法を本当に探している場合は、シリアル化を確認する必要があります

于 2013-02-05T15:22:44.027 に答える