在窗口>首選項>常規>搜索,有選擇忽略潛在的匹配意義「忽略潛在的匹配」
它有什麼作用?無論我是否激活它,我從來沒有看到任何區別。這是一個只對Java開發有意義的選擇(我從來不這樣做,但我使用Eclipse在C,Python和PHP中開發)?
在窗口>首選項>常規>搜索,有選擇忽略潛在的匹配意義「忽略潛在的匹配」
它有什麼作用?無論我是否激活它,我從來沒有看到任何區別。這是一個只對Java開發有意義的選擇(我從來不這樣做,但我使用Eclipse在C,Python和PHP中開發)?
例子可見bug 127442:這取決於你正在尋找(一類,方法,...),搜索引擎可以找到實例,其可能比賽(但不能肯定地說)。
那些情況被標記爲「POTENTIAL_MATCH
」:
具有不同數目的參數的方法,沒有潛在的匹配。
(見bug 97322)
的潛在匹配的匹配,其中解析失敗(例如該方法是結合爲null)。
如果用戶搜索「foo(String)
」(沒有限定String
),則「foo(java.lang.String)
」和「foo(p.String)
」都是完全匹配。對於
.class
文件的情況下,我想我們只能有潛力的比賽中缺少的類型案件的情況(見bug 196200),即如果.class文件編譯和某些類型的引用它不翼而飛。
潛在匹配不當行爲的當前示例中bug 382778發現:
我有一個公共靜態無效方法
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()
以上返回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
執行,它不尋找第二類型。
這很糟糕,我們直到現在還沒有遇到這個問題,這是令人驚訝的。
我想我明白這是標題。我一直在尋找一個接口的'getName()',並且在Spring框架中與完全不相關的類進行匹配。 – 2012-08-09 08:35:21
投票並標記爲'答案'。但是,真的,你壓倒了我!在這裏涌出的知識知識太多了,我無法處理。我完全被你寫下來的速度和容易感到敬畏。 我會記住,在閱讀了你提到的一些錯誤報告之後,是 - 是的,它是一個java事物 - 不,在當前狀態下,通常不希望它被啓用。 非常感謝! – parvus 2012-08-09 19:46:48
在Eclipse露娜(服務版本1(4.4.1))我搜索只是爲這個Java方法引用:
merge(DashboardConfigurationModel template, DashboardModel custom)
它返回兩個引用。爲了適應方法簽名,對merge()
方法的這些調用之一通過了DashboardConfigurationModel
和DashboardModel
。這是一場比賽!
對merge()
方法的其他引用傳入String
和Map
。它在Eclipse中被標記爲「潛在的匹配」,但在我看來,因爲參數類型不匹配,所以它沒有可能匹配。
我然後檢查忽略潛在的匹配,再次搜索,這種噪音消失了。
我正要[指向手冊](http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-search.htm )但只說「如果你只想看到完全匹配,請選擇此選項」。這並不完全有幫助;-) – 2012-08-09 08:17:19
這種單一選項多年來一直是個謎!我已經使用google搜索了很多次,內置的幫助(我相信這與http://help.eclipse.org相同),並且從未發現任何遠程有用的東西。 – parvus 2012-08-09 08:27:51
剛剛添加了一個有問題的「潛在匹配」的例子,以及一個錯誤報告的參考,解釋了爲什麼不同的參數號碼不是「潛在匹配」的標準。 – VonC 2012-08-09 09:10:13