2011-04-07 124 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; 
}