7

[ウィンドウ] > [設定] > [一般] > [検索]の下に、[潜在的な一致を無視する] オプションがあります。

それは何をするためのものか?アクティブにするかどうかに関係なく、違いはわかりません。

Java 開発にのみ意味のあるオプションですか (私は決してしませんが、Eclipse を使用して C、Python、および PHP で開発しています)?

4

2 に答える 2

5

例については、バグ 127442を参照してください。検索対象 (クラス、メソッドなど) に応じて、検索エンジンは一致する可能性のあるインスタンスを見つけることができます(ただし、確実とは言えません)。

これらのインスタンスは " POTENTIAL_MATCH" とマークされています:

パラメータの数が異なるメソッドは、一致する可能性はありません。

(バグ 97322を参照)

潜在的な一致は、解決に失敗した一致です(たとえば、メソッド バインディングが null の場合)。ユーザーが " " を (修飾なしで)
検索した場合、 " " と " " は両方とも完全に一致します。foo(String)Stringfoo(java.lang.String)foo(p.String)

ファイルの場合、型が欠落している場合 (バグ 196200を参照)、つまり .class ファイルがコンパイルされ、参照する.class型が欠落している場合にのみ一致する可能性があると思います。


潜在的なマッチの誤動作の現在の例は、バグ 382778にあります。

public static void method がありprintIt(String name)ます。
呼び出し階層を開くと、一部の発信者が見つかりません。

Java検索がprintIt(String)参照の完全一致ではなく潜在的なものとしてマークするため、呼び出し元が欠落していると推測しています。
次のコードは、潜在的であるとマークされている場合もあれば、正確である場合もあります。

// Listing 1
PublicInterface2 impl2 = new Impl2("Name Broken");
Static.printIt(impl2.getName());

検索結果が潜在的とマークされている場合、発信者はprintIt()通話階層から欠落しています。

PublicInterface2 is an empty public interface which extends PackageInterface2Getters.
PackageInterface2Getters is an empty default-scoped interface which extends PackageInterface1Getters.
PackageInterface1Getters is a default-scoped interface which declares String getName().

したがってimpl2.getName()、上記は a を返しますString

いくつかの問題が報告されているため、一致が可能性があるとマークされていると思います。

...
Filename : \D:\workspace\eclipse\_runtimes\jdt\call-hierarchy-bug\src\main\PublicInterface2.java
COMPILED type(s)    
2 PROBLEM(s) detected 
     - Pb(2) PackageInterface1Getters cannot be resolved to a type
     - Pb(327) The hierarchy of the type PublicInterface2 is inconsistent

次のことがわかります。

コンパイラは、NameEnvironment依存型の型情報を取得するよう " " に要求します。
検索には独自のNameEnvironment実装がJavaSearchNameEnvironmentあり、セカンダリ タイプを探していません。
これは悪いことであり、今までこの問題に遭遇していなかったのは驚くべきことです。

于 2012-08-09T08:32:10.500 に答える