0

Eclipse でデバッグしようとしていますが、デバッガーが嘘をついているようです。Map<String, NormalizedFunction>呼び出された関数があります。ブレークポイントに到達すると、変数関数が表示されます。変数ビューから選択すると、「{getX()=[]int getX()}」と表示されます。これは正しいです。明らかに、このマップにはキーと値があります。ただし、関数変数を開いて selectkeysetまたはvalueseclipse を実行すると、null と表示されます。キーと値があり、コードが正しく実行されていることが明確に示されている場合、これはどのように行われるのでしょうか?

4

1 に答える 1

1

デバッガーは嘘をついていません。keySetマップのすべてのキーをHashMapのプライベート フィールドに格納する必要があると想定しています。しかし、そうではありません。この変数は、keySet()メソッドが呼び出されると遅延して入力されます。メソッドの実装を見てください。

マップについて知りたい場合は、文書化された指定された API を使用します。表示ビューを使用し、 と入力functions.keySet()し、右クリックして [評価] を選択すると、マップのキー セットが実際に取得されます。

于 2013-06-27T22:23:39.220 に答える