2014-04-07 11 views
5

एक गैर स्थिर सेटर विधि इस तरह दिख सकता:जावा स्थिर आत्म संदर्भ

private int var; 

public void setVar(int var) { 
    this.var = var; 
} 

और मैं बाहर एक स्थिर विधि के साथ हल करने के लिए कि कैसे नहीं मिल सकता है:

private static int var; 

public static void setVar(int var) { 
    // ??? 
} 

एक समाधान myClass.var = var; लिखना है। लेकिन यह बदसूरत है, क्योंकि जब मैं अपनी कक्षा का नाम बदलता हूं, तो मुझे सभी घटनाओं को ढूंढना और बदलना पड़ता है। एक और समाधान पैरामीटर का नाम v पर पुनर्नामित करना है और var = v; लिखें। मेरे लिए यह भी बदसूरत है।

क्या यह वास्तव में php में हल करने का कोई तरीका नहीं है?

+2

लिए एक उचित आईडीई उपयोग करते समय, आप हमेशा ऐसा कर सकते हैं एक * Refactor नाम बदलें *, जो किसी भी स्पष्ट classname रूप में अच्छी तरह से बदल जाएगा। – skiwi

+1

यदि आप अपनी कक्षा का नाम बदलते समय कुछ रिफैक्टरिंग समाधान का उपयोग करते हैं तो इसे आपके लिए उन संदर्भों का ख्याल रखना चाहिए। –

+0

इस तथ्य के कारण कि वर्ग फ़ील्ड 'var' निजी है, आपको कभी भी संदर्भ के लिए क्लास में कहीं और खोजना नहीं है, जब आप उचित रीफैक्टरिंग टूल (आईडीई की तरह) के बिना कक्षा का नाम बदलते हैं। इसके अलावा, यदि आप आईडीई का उपयोग नहीं करते हैं तो आप अन्य प्रकार के आयात को कैसे सेट करते हैं, जहां आप सेटर विधि 'setVar() 'का उपयोग करते हैं? मेरा सुझाव है कि आप एक आईडीई का उपयोग करें और वहां कोई _real_ समस्या नहीं होनी चाहिए। – Harmlezz

उत्तर

1

यह अन्य तरीके से इस काम करने के लिए की तुलना में आप जानते हैं कि संभव नहीं है ....... ....

myClass.var = var; 
var = v; 

केवल दो तरह से है कि पहले से ही तुम्हें पता है .......... दोनों अच्छा ..कोई एक है बदसूरत हैं आप हमें कर सकते हैं ई .......

अगर आप करेंगे ग्रहण कि देखभाल जब भी आप क्लास का नाम बदल जाएगा होगा जैसे किसी भी आईडीई का उपयोग करता है ...........

+0

@ हेलोई खुश है कि मैं आपकी मदद कर सकता हूं ......... –

1

हम इस प्रकार लिखने की ज़रूरत:

ClassName.var=var; 
1

इसे इस तरह कार्य करें:

public class Example { 

    private static int var; 

    public static void setVar(int var) { 
     Example.var = var; 
    } 
} 
2

क्षेत्र चर नाम बदल रहा है सबसे सुविधाजनक तरीका है। Android Code Style Guideline पर एक नज़र डालें। वे sVariable जैसे सभी स्थिर क्षेत्रों का नाम देने का सुझाव देते हैं। यह बदसूरत और बहुत समझ में नहीं आता है। इसलिए, यह इस तरह होगा:

private static int sVar; 

public static void setVar(int var) { 
    sVar = var; 
} 
+0

मुझे नहीं पता कि अन्य आईडीई कैसे व्यवहार करते हैं, लेकिन जब मैं नेटबीन के साथ 'एसवर' के लिए एक सेटर-विधि स्वत: बना देता हूं, तो विधि-नाम 'सेटवर' के बजाय 'सेट वार' होगा। कष्टप्रद। – halloei

+0

@ halloei मेरे लिए परेशान नहीं है, सिर्फ एक char को हटाने के लिए। – nikis

+0

आप इस विचार को इस विचार में बदल सकते हैं। ग्रहण और इंटेलज के पास उस विकल्प को नेटबीन के बारे में निश्चित नहीं है। लेकिन यह वहां होना चाहिए। –

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