0

これが私のサンプルコードです。これにより、「{test=theClass@7096985e}」が出力されますが、型とスコープの値を取得するために必要です。私はいくつかのことを試しました - どの方向も素晴らしいでしょう. ありがとう!

import java.util.*;

class theClass {
    String type;
    String scope;

    public theClass(String string1, String string2) {
        type = string1; scope = string2;
    }

}

public class Sandbox {

    public static void main(String[] args){
        Hashtable<String, theClass> theTable = new Hashtable<String, theClass>();
        theClass object = new theClass("int", "global");
        theTable.put("test", object);

        System.out.println(theTable.toString());

    }
}
4

4 に答える 4

5

toStringクラスのメソッドをオーバーライドするだけです。

class theClass{
    String type;
    String scope;

    public theClass(String string1, String string2)
    {
        type = string1; scope = string2;
    }

    @Override
    public String toString(){
      return type+" "+scope;
    }

}
于 2013-07-08T08:01:26.583 に答える
1

メソッド toString() を theClass{} に追加します。

@Override
public String toString() {
    return "theClass {type=" + type+", scope= "+scope+"};
}
于 2013-07-08T08:01:14.307 に答える
1

クラスのクラスによって提供されるtoString()メソッドのデフォルトの実装をオーバーライドする必要があります。Object

@Override
public String toString() {
   return "type=" + type+", scope= "+scope;
}

System.out.println()メソッドを使用String.valueOf()してオブジェクトを印刷します。これはオブジェクトで を使用しtoString()ます。クラスでメソッドをオーバーライドしていない場合toString()、クラスによって提供されるデフォルトの実装が呼び出されますObject

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

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

したがって、このような出力が得られます。

于 2013-07-08T08:04:08.220 に答える
0

あなたのコードは正しく動作します。実際にハッシュテーブルからオブジェクトを取得します。オブジェクトの文字列表現と混同しています。

内部データを表示するには、public String toString()メソッドのデフォルトの実装をオーバーライドする必要があります。

于 2013-07-08T08:02:25.230 に答える