2017-07-08 13 views

答えて

1

ウルの質問は、私には非常に明確ではないですが、私はuがこの意味を推測:

  • uは集合Sに含まれているオブジェクトOを持って、より多くのオブジェクトが含まれている
  • OでありますUのコードで更新された(つまり、内部プロパティが変更された)Uは、コードビューを介してこれらの変更を見守りたいと思っています。
  • これはコードライン/ Oへの険しい道。

私は、EclipseのデバッグIDまたはオブジェクトのハッシュによってref @ Oを行うことができる方法(内部Eclipseのおいしさ)を知らない。

しかしこれはかなり簡単に行うことができます:これを達成するために、デバッガで選択されている現在のフレームからの(長い)参照の方法でOに到達できるだけです。

最も簡単な方法は、何らかの静的なvarにOを設定するためのコードをいくつか追加することです。 Uは、現在のスタックフレームのコンテキストで実行されるJavaコードを実行できる「表示」ビューの助けを借りて、手動でデバッグ中に静的なvarを割り当てることさえできます。

ステップ:

  1. ウルのコードベースにクラスMyWatcherを追加/作成します。 uはOでウルのハンドルを取得する場所(例えば、サンプルコードでは、第5回休憩時間にセットにoを追加するとき)
  2. が表示画面を開き、「O置き換える(この行MyWatcher.watches.put("a", o)を追加するウルコードスルー
  3. ステップ「ウルブレークポイントでOを参照する式)
  4. によってはCtrl + Uでの行を実行したり、コンテキストメニュー
  5. スルーウル 『表現』ビューにこれを追加します。MyWatcher.watches.get("a")
  6. 今Oは、すべての回で表示されたままになります例えば、以下の例では:uはfoo()している場合でも、B/Cのマップは、私は全くの私のオブジェクトを見ることができるようにするために、ハッシュまたはEclipse IDを使用する意味O.
public class MyCode { 

    public static void main(final String[] args) { 
    bar(); 
    foo(); 
    } 

    static void bar() { 
    final Set<Object> set = new HashSet<>(); 
    for (int i = 0; i < 10; i++) { 
     final List<Integer> o = Arrays.asList(i); 
     set.add(o); 
    } 

    } 

    static void foo() { 
    System.out.println("bar"); 
    } 
} 

public class MyWatcher { 
    public static final Map<String, Object> watches = new HashMap<>(); 
} 
-1

MyObjectクラスにtoString()メソッドを追加します。 Eclipseを使用すると、 右クリック(MyObject内) - >ソース - > Generate toString()を使用して行うことができます。 これで、MyObjectのハッシュIDではなく内容を見ることができます。

+0

上のARの参照を保持していますスコープ外であっても、コード内の大きなHashSetでオブジェクトを失うと、参照オブジェクトがコードのどこかで更新されるため、これらのIDの1つを使用してオブジェクトを常に監視したいと考えています。 – user3499973

+0

OPの質問は 'toString'ではなく、デバッグに関するものです。 –

関連する問題