2011-04-07 56 views
12

的Android功能Android的:如何設置默認值的參數變量

PHP例子:

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

的問題是如何做到這一點的機器人......

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

上面的解決方案不起作用,我該怎麼辦?

謝謝!

+0

我不認爲我們能做到這一點在Java中。如果我沒有記錯的話,我可以大膽猜測這是Java 7中的一個特性。因此,在這種情況下,可以檢查變量'ttt'是否爲null,如果它的null ,給它分配一個值。 – 2011-04-07 12:55:54

+1

相關:不支持Java默認參數值?(http://stackoverflow.com/questions/997482/does-java-support-default-parameter-values) – eldarerathis 2011-04-07 12:57:20

+0

[Java的可選參數]的可能的複製(HTTP:/ /stackoverflow.com/questions/965690/java-optional-parameters) – 2017-01-12 08:29:54

回答

10

沒有,Java不支持的功能parameteres默認值。有一個關於借款語言有趣的訊息功能位置:http://java.dzone.com/news/default-argument-values-java

+0

我這麼認爲,但原生函數以某種方式支持它......我實際上不記得一個......或者,例如JSONArray可以從不同的來源構建:字符串,JSONTokener x,集合集合或空白...我認爲可以有工作 – 2011-04-07 13:02:30

+0

好了解決我的問題是將String []放在裏面,可以添加或刪除參數。 .. – 2011-04-07 13:03:15

+0

在這篇文章中它是很好的解決方法...謝謝! – 2011-04-07 14:16:10

0

Java不支持語法,會做你想要的。

也許在someFunction(INT)開始,你可以只檢查傳入的值,並分配一個不同的值,如果你不喜歡什麼未來。

if (ttt == 0) ttt = 5;

請注意出現這個問題與android無關,因此被錯誤標記。

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

我覺得這樣比較好。它可以簡化,如'return bonus.length> 0?得分+獎金[0]:得分;' – Sithu 2016-02-25 07:25:29

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; 
} 
相關問題