2012-08-09 15 views
5

के तहत विंडो> प्राथमिकताएं> सामान्य> खोजें, वहाँ विकल्प संभावित मैचोंका अर्थ 'को अनदेखा संभावित मैचों'

पर ध्यान न दें यह क्या करता है है? चाहे मैं इसे सक्रिय करता हूं या नहीं, मुझे कोई फर्क नहीं पड़ता।

क्या यह एक विकल्प है जो जावा विकास के लिए केवल समझ में आता है (जो मैं कभी नहीं करता, लेकिन मैं ग्रहण का उपयोग कर सी, पायथन और PHP में विकसित करता हूं)?

+0

मैं [मैनुअल पर इंगित करता हूं] (http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-search.htm) लेकिन यह केवल इतना कहता है "अगर आप केवल सटीक मिलान देखना चाहते हैं तो इस विकल्प का चयन करें।" जो बिल्कुल सहायक नहीं है ;-) –

+0

वह एकल विकल्प मेरे लिए वर्षों से एक रहस्य रहा है! मैंने पहले से ही Google का उपयोग करके कई बार खोज की है, अंतर्निहित सहायता (जो, मुझे विश्वास है, http://help.eclipse.org जैसा ही है), और कभी भी कुछ भी दूरस्थ रूप से उपयोगी नहीं मिला। – parvus

+0

ने समस्याग्रस्त "संभावित मिलान" का एक उदाहरण जोड़ा, साथ ही एक बग रिपोर्ट के संदर्भ में बताया कि विभिन्न पैरामीटर संख्या "संभावित मिलान" के लिए मानदंड क्यों नहीं है। – VonC

उत्तर

3

उदाहरण के लिए bug 127442 देखें: क्या आप (एक वर्ग, एक विधि, ...) खोज रहे हैं पर निर्भर करता है, खोज इंजन उदाहरण हैं जिनमें मैच (लेकिन यह नहीं कुछ के लिए कह सकते हैं) कर सकता है पा सकते हैं।

उन उदाहरणों "POTENTIAL_MATCH" चिह्नित कर रहे हैं:

मानकों के विभिन्न संख्या के साथ एक विधि एक संभावित मैच नहीं है।

(bug 97322 देख)

एक संभावित मैच एक मैच जहां संकल्प में विफल रहा है है (उदाहरण के लिए विधि बाध्यकारी रिक्त है)।
यदि उपयोगकर्ता "foo(String)" (String योग्यता के बिना) की खोज करता है, तो "foo(java.lang.String)" और "foo(p.String)" दोनों सटीक मिलान हैं।

.class फ़ाइल केस के लिए, मुझे लगता है कि हमारे पास लापता प्रकार के मामले (bug 196200 देखें) के मामले में केवल संभावित मिलान हो सकते हैं, यानी .class फ़ाइल संकलित की गई थी और कुछ प्रकार के संदर्भ गायब थे।


संभावित मैच दुर्व्यवहार के एक मौजूदा उदाहरण bug 382778 में पाया जाता है:

मैं एक public static void विधि printIt(String name) है।
जब मैं अपना कॉल पदानुक्रम खोलता हूं, तो कुछ कॉलर गायब हैं।

मुझे लगता है कि कॉलर्स गायब हैं क्योंकि जावा खोज 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" प्रकार प्राप्त करने के लिए

मैं मैचों बनाने लगता है जो संभावित रूप में चिह्नित किया कुछ समस्याओं की सूचना दी रहे हैं किसी भी निर्भर प्रकार की जानकारी।
खोज JavaSearchNameEnvironment में कार्यान्वयन है और यह माध्यमिक प्रकारों की तलाश नहीं कर रहा है।
यह बुरा है और यह आश्चर्य की बात है कि हमने अभी तक इस समस्या में भाग नहीं लिया है।

+0

मुझे लगता है कि मैं देख रहा हूं कि यह कहां जा रहा है। मैं एक इंटरफ़ेस के 'getName()' की खोज कर रहा हूं और कक्षाओं में स्प्रिंग ढांचे में मिलान प्राप्त कर रहा था जो पूरी तरह से असंबंधित थे। –

+0

वोट दिया गया और 'उत्तर' के रूप में चिह्नित किया गया। लेकिन वास्तव में, तुम मुझे जबरदस्त कर रहे हो! यहां ज्ञान डाला गया है मेरे लिए संभालने के लिए बहुत अधिक है। मैं उस गति और सहजता से पूरी तरह से डरता हूं जिसके द्वारा आपने इसे लिखा है। आपको इससे संबंधित कुछ बग रिपोर्ट पढ़ने के बाद, मुझे यह याद होगा, - हाँ, यह एक जावा चीज है - नहीं, वर्तमान स्थिति में, कोई सामान्य रूप से इसे सक्षम नहीं करना चाहता। बहुत बहुत धन्यवाद! – parvus

0

ग्रहण लूना में (सेवा रिलीज 1 (4.4.1)) मैं तो बस इस जावा विधि के लिए संदर्भ के लिए खोज:

merge(DashboardConfigurationModel template, DashboardModel custom) 

यह दो संदर्भ देता है। merge() विधि में इन कॉलों में से एक विधि DashboardConfigurationModel और DashboardModel में विधि हस्ताक्षर के रूप में गुजरती है। यह एक मैच ठीक है!

merge() विधि का अन्य संदर्भ String और Map में मिलता है। इसे ग्रहण में "संभावित मिलान" के रूप में चिह्नित किया गया है, लेकिन मेरे दिमाग में, चूंकि तर्क प्रकार मेल नहीं खाते हैं, इसलिए इसमें शून्य होने की संभावना शून्य है।

मैंने चेक किया संभावित मैचों को अनदेखा करें, फिर से खोज की, और यह शोर चला गया।

संबंधित मुद्दे