2

私は Eclipse でデバッグしており、匿名でインスタンス化されたインターフェイスであるパラメーターを取得しました。どこで作成されたか調べる方法はありますか?

4

4 に答える 4

4

デバッグ中は、デバッグ パースペクティブで実際のスタック トレースを確認できます。匿名クラスのインスタンスが作成されたメソッドに到達するまで、ブレーク ポイントで実行が停止している場所からトレースをクリックして戻します。

ここに画像の説明を入力

これがインスタンスを返した呼び出しです

ここに画像の説明を入力

メソッドを見つけるためにヒットF3します。

ここに画像の説明を入力

于 2013-11-08T17:12:22.300 に答える
3

アプリケーションの最初から段階的にデバッグを行わない限り、Eclipse を使用してインスタンス化された場所を直接見つける方法はありません。

私が見つけた最善の方法は、ファイル検索 (ctrl+h、ファイル検索タブ) を実行しnew "yourInterface"() {、すべての *.java ファイルで を検索することです。これにより、コード内でそのインターフェイスをインスタンス化するすべての場所が見つかります。

ワーキング セットを使用してスコープを縮小できる場合は、見つかった場所のどれが探している場所であるかを簡単に見つけることができます。

于 2013-11-08T16:49:16.043 に答える
0

他のソリューションを使用したため、この問題をさらに追跡しませんでした。しかし、私が助けたのは、変数「genericType」が匿名インスタンス化インターフェースであるこのコードでした。

// Ensure that we're handling only List<MediaEntity> objects.
boolean isWritable;
if (List.class.isAssignableFrom(type) && genericType instanceof ParameterizedType) {
    ParameterizedType parameterizedType = (ParameterizedType) genericType;
    Type[] actualTypeArgs = (parameterizedType.getActualTypeArguments());
    isWritable = (actualTypeArgs.length == 1 && actualTypeArgs[0].equals(MediaEntity.class));
} else {
    isWritable = false;
}
于 2013-11-11T13:42:49.393 に答える