2011-04-07 12 views
12

एंड्रॉयड समारोह लिए एक डिफ़ॉल्ट मान सेट करने के लिए कैसेएंड्रॉयड: एक तर्क चर

पीएचपी उदाहरण:

function HaHa($a = "Test") { print $a; }

सवाल यह है कि एंड्रॉयड में यह करने के लिए ... है

public void someFunction(int ttt = 5) 
{ 
    // something 
} 

उपरोक्त समाधान काम नहीं करता है, मैं इसे कैसे कर सकता हूं?

धन्यवाद!

+0

मुझे नहीं लगता कि हम जावा में ऐसा कर सकते हैं। और अगर मैं सही ढंग से याद करता हूं, तो मैं सिर्फ जंगली अनुमान लगा सकता हूं, यह एक ऐसी विशेषता है जो जावा 7 में होना चाहिए। तो इस मामले में, कोई परिवर्तनीय 'ttt' को शून्य होने के लिए देख सकता है, और यदि उसकी शून्य , इसे एक मान असाइन करें। –

+1

संबंधित: [जावा डिफ़ॉल्ट पैरामीटर मानों का समर्थन करता है?] (Http://stackoverflow.com/questions/997482/does-java-support-default-parameter-values) – eldarerathis

+0

[जावा वैकल्पिक पैरामीटर] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/965690/java-optional-parameters) –

उत्तर

10

नहीं, जावा फ़ंक्शन parameteres के लिए डिफ़ॉल्ट मानों का समर्थन नहीं करता है। यहां उधार लेने वाली भाषा सुविधाओं के बारे में एक दिलचस्प पोस्ट है: http://java.dzone.com/news/default-argument-values-java

+0

मैंने ऐसा सोचा लेकिन मूल कार्य किसी भी तरह इसका समर्थन करते हैं ... मैं वास्तव में एक को याद नहीं कर सकता ...या उदाहरण के लिए JSONArray को विभिन्न स्रोतों से बनाया जा सकता है: स्ट्रिंग, JSONTokener x, संग्रह संग्रह या खाली ... मैंने सोचा कि –

+0

के आसपास काम हो सकता है मेरे लिए चारों ओर काम करना स्ट्रिंग [] अंदर रखना और तर्क जोड़ना या निकालना है। .. –

+0

इस लेख में यह बहुत अच्छा काम है ... धन्यवाद! –

0

जावा एक वाक्यविन्यास का समर्थन नहीं करता है जो आप चाहते हैं जो करेंगे।

शायद someFunction (पूर्णांक) के शुरू में, तुम बस भेजे मूल्य की जांच कर सकता है, और अगर आप क्या में आ रहा है पसंद नहीं है एक अलग मूल्य निर्दिष्ट।

if (ttt == 0) ttt = 5;

कृपया ध्यान दें इस सवाल का प्रतीत होता है एंड्रॉइड के साथ कुछ लेना देना नहीं है, और इसलिए अनुचित रूप से टैग किया गया है।

9

आप इस तरह अधिक भार का दुरुपयोग कर सकते हैं:

int someMethod() { return someMethod(42); } 
int someMethod(int arg) { .... } 
5

कुछ भी ओवरलोड आवश्यकता नहीं, बस लिखना:

public int getScore(int score, Integer... bonus) 
{ 
    if(bonus.length > 0) 
    { 
     return score + bonus[0]; 
    } 
    else 
    { 
     return score; 
    } 
} 
+0

मुझे लगता है कि यह बेहतर है। इसे 'वापसी बोनस। लम्बाई> 0 जैसे सरलीकृत किया जा सकता है? स्कोर + बोनस [0]: स्कोर; ' – Sithu

1

आप एक समारोह अधिक भार का उपयोग कर सकते हैं। ओवरलोडिंग भी ठीक है, लेकिन यदि आपको कई तर्कों के लिए डिफ़ॉल्ट मानों की आवश्यकता है तो आप डिफ़ॉल्ट तर्कों के सभी संभावित संयोजनों के साथ कई विधियां बनाने के लिए समाप्त हो जाएंगे, उदाहरण के लिए आप कल्पना करते हैं कि आप 3 तर्कों के लिए डिफ़ॉल्ट मान रखना चाहते हैं। आप इस

public void methodA(A arg1) { } 
public void methodA(B arg2,) { } 
public void methodA(C arg3) { } 
public void methodA(A arg1, B arg2) { } 
public void methodA(A arg1, C arg3) { } 
public void methodA(B arg2, C arg3) { } 
public void methodA(A arg1, B arg2, C arg3) { } 

साथ खत्म हो जाएगा तो यहाँ हैक मैं मेरे लिए किया है, तो आप भी उपयोग कर सकते हैं

public static void main(String[] args) 
{ 
    defaultParameter(); 
    defaultParameter(true); 
} 

public static void defaultParameter(Boolean ...gender) 
{ 
    boolean genderBoolean = false; // It the default value you want to give 
    if(gender.length == 1) 
    { 
     genderBoolean = gender[0]; // Overrided Value 
    } 
    System.out.println(genderBoolean); 
} 

ऊपर कोड genrate होगा परिणाम

false 
true 

मैं यहाँ पता लगाना उदाहरण java-default-parameter-values

2

ऐसा करें (3 बिंदुओं के साथ):

public void doSomething(boolean... arg1) { 
    boolean MyArg1= (arg1.length >= 1) ? arg1: false; 
} 
संबंधित मुद्दे