2012-04-05 14 views
5
private void launchEventPanel(String title) { 
    EventQueue.invokeLater(new Runnable(title) { 
     public void run() { 
      JFrame myFrame = new JFrame(); 
      myFrame.setTitle(this.val$title); 
      myFrame.setIconImage(CrConference.this.mainCore.myPanel.myIconManager.getPromptIcon(Mart.class.toString())); 
      myFrame.getContentPane().add(Conference.this.myEventPanel, "Center"); 
      myFrame.pack(); 
      myFrame.setVisible(true); 
     } 
    }); 
} 

मुझे कुछ कोड मिला है जिसे मैं संकलित करने और समझने की कोशिश कर रहा हूं। मदद की अत्यधिक सराहना

+0

http://stackoverflow.com/questions/65475/मान्य-वर्ण-इन-ए-जावा-क्लास-नाम, http://stackoverflow.com/questions/5845299/why-is-it-bad-to-start-a-variable-name-with-a -डोलार-साइन-इन-सी-जावा-एंड-सिमिला, http://stackoverflow.com/questions/1987603/is-there-a-convention-when-using-java-rmi-to-use-the-dollar -sign-in-a-variab –

+2

क्या यह संकुचित कोड है? मैं डिकंपील्ड कोड में वैरिएबल नामों की अपेक्षा करता हूं। – Jesper

+0

मैंने "विषम कोड", 'वैल $ शीर्षक' को पूरी तरह से वैध जावा पहचानकर्ता को प्रतिबिंबित करने के लिए शीर्षक संपादित किया है - यह 'foobar' के रूप में मान्य है - लेकिन "नियम" इसका उपयोग नहीं करना है (उपकरण को छोड़कर कोड स्वचालित रूप से उत्पन्न करें)। –

उत्तर

3

यह पंक्ति:

myFrame.setTitle(this.val$title); 

बस, एक JFrame वस्तु के शीर्षक की स्थापना ऐसा करने के लिए विशेषता val$title के मूल्य का उपयोग कर रहा है। val$title वर्तमान वर्ग का एक उदाहरण विशेषता है, इसका नाम थोड़ा असामान्य है ($ की वजह से) लेकिन फिर भी, जावा में पहचानकर्ता के लिए मान्य है।

+0

यह एक स्थानीय चर हो सकता है :) –

+0

@ Eng.Fouad उस नाम के साथ कोई स्थानीय चर –

+0

ओह में कोड में घोषित नहीं किया गया है, तो आप सही हैं। मैंने यह नहीं देखा। –

2

लाइन 5 केवल फ्रेम का शीर्षक (विंडोज़ में विंडो फ्रेम के शीर्ष पर दिखाई देने वाला पाठ) "यह .val $ title" है, जो केवल स्थानीय ज्ञापन है जिसका नाम $ $ शीर्षक है कोड को शीर्षक स्ट्रिंग को संग्रहीत किया गया है।

हालांकि सी पर इलाज के आधार पर अधिकांश भाषाओं को एल्ज़ या एजेड जैसे अल्फापेटिक कैरेक्टर के रूप में देखने के लिए थोड़ा असामान्य है।

+0

भाषाएं * ढीले * सी पर आधारित, या सी-जैसे * वाक्यविन्यास * का उपयोग करें, शायद। सी स्वयं नहीं करता है, न ही सी ++ AFAIK करता है। जेएस और जावा एकमात्र सी-एलिक हैं जो मैं वास्तव में ऐसा करने के बारे में सोच सकता हूं। – cHao

4

के रूप में वर्णित here और here, Runnable constuctor को तर्क और क्षेत्र का नाम "this.val $" संकलक द्वारा जोड़ा गया है और उत्पन्न बाईटकोड में दिखाई देता है। इसलिए इन अतिरिक्त चीजें decompiled कोड में परिलक्षित होते हैं।

मूल decompiled कोड प्राप्त, title की घोषणा करने के final जोड़ सकते हैं और Runnable करने के लिए कॉल और title के सामने this.val$ से से title निकालने के लिए:

private void launchEventPanel(final String title) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      JFrame myFrame = new JFrame(); 
      myFrame.setTitle(title); 
      myFrame.setIconImage(CrConference.this.mainCore.myPanel.myIconManager.getPromptIcon(Mart.class.toString())); 
      myFrame.getContentPane().add(Conference.this.myEventPanel, "Center"); 
      myFrame.pack(); 
      myFrame.setVisible(true); 
     } 
    }); 
} 
संबंधित मुद्दे