2014-11-12 6 views
6

में स्थानीय चर नहीं देख सकता है मैंने देखा कि जब मैं अपने माउस को एक स्थानीय चर पर घुमाता हूं, जब मेरा डिबगर लैम्ब्डा के अंदर बंद हो जाता है तो यह Cannot find local variable 'variable_name' की रिपोर्ट करेगा, भले ही यह लैम्ब्डा के अंदर दिखाई दे और इसका उपयोग किया जाए।डीबगर एक लैम्ब्डा

उदाहरण कोड

public class Main { 
    public static void main(String[] args) { 
     String a = "hello_world"; 
     m1(a); 
    } 

    private static void m1(String a) { 
     AccessController.doPrivileged((PrivilegedAction<String>)() -> { 
      System.out.println("blala " + a); 
      return "abc"; 
     }); 
    } 
} 

System.out.println("blala " + a); में एक ब्रेकपाइंट साथ की कोशिश करो और return "abc" के बाद और यह हमेशा एक ही त्रुटि की रिपोर्ट।

enter image description here

मैं AccessController.doPrivileged इस्तेमाल किया है क्योंकि यह क्या मैं अपने मूल कोड में प्रयोग किया जाता है और निश्चित रूप से मैं जावा 8.

उपयोग कर रहा हूँ यह Watchers और Evaluate Expression में एक ही बात कहते हैं।

मैं "गुमनाम वर्ग" संस्करण और डीबगर उपयोग करने की कोशिश a का मूल्य सही ढंग से देखता है

enter image description here

private static void m1(String a) { 
    AccessController.doPrivileged(new PrivilegedAction<String>() { 
     @Override 
     public String run() { 
      System.out.println("blala " + a); 
      return "abc"; 
     } 
    }); 
} 

मैं लैम्ब्डा भाव के बारे में कुछ याद कर रहा हूँ या यह एक IntelliJ विचार 14 बग है?

मैं अभी बग की रिपोर्ट नहीं करना चाहता क्योंकि मैंने पहले से ही एक बग की सूचना दी है जो IntellIJ IDEA के बजाय मेरे कोड के कारण हुई थी, इसलिए मैं कुछ करने से पहले सुनिश्चित करना चाहता हूं (और क्योंकि मैं जावा का उपयोग नहीं करता 8 अक्सर, इसलिए मैं गलत हो सकता था)।

उत्तर

8

यह एक ज्ञात मुद्दा प्रतीत होता है। जेटब्रेन के अनुसार इस व्यवहार के मूल कारण जेडीके के साथ हैं। अधिक जानकारी के लिए देखें: IDEA-126257

3

मैं पुष्टि कर सकता क्या माइक Rylander से जुड़े हुए विचार बग रिपोर्ट में लिखा है: यह एक JDK बग और अद्यतन JDK के संस्करण 8u60_25 करने के लिए इसे हल करती है।