Android:如何为参数变量设置默认值

21

Android function

PHP示例:

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

问题是如何在Android上实现它...

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

上面的解决方案不起作用,我该怎么做?

谢谢!


我认为我们无法在Java中做到这一点。如果我没记错的话,我只能猜测这是Java 7应该具备的功能。 因此,在这种情况下,可以检查变量“ttt”是否为空,如果为空,则将一个值赋给它。 - Aman Alam
1
相关:Java是否支持默认参数值? - eldarerathis
可能是Java可选参数的重复问题。 - T.Todua
7个回答

15

我也这么想,但是本地函数以某种方式支持它... 我实际上记不起来有哪个了... 或者例如JSONArray可以从不同的来源构建:String、JSONTokener x、Collection collection或空白... 我认为可能会有解决方法。 - M.V.
我的解决方法是将String[]放在里面,这样就可以添加或删除参数了... - M.V.

14

无需过度负荷,只需编写:

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

我认为这种写法更好。它可以简化为 return bonus.length > 0 ? score + bonus[0] : score; - Sithu
我喜欢你的方式。 - Mahdi-Malv

13

你可以这样滥用重载:

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

5
您可以使用“3个点”语法:...
public void doSomething(boolean... arg1) {
    boolean MyArg1= (arg1.length >= 1) ? arg1 : false;
}

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);
}

上面的代码将生成结果。
false
true

我在这里找到了一个示例Java 默认参数值


1
现在你可以使用 Kotlin 在 Android 上进行编程!Kotlin 支持默认参数,因此您可以编写以下函数:
fun addTheBook(title: String, author : String = "No Name"){...}

然后你可以像这样调用它:
addTheBook("The Road Less Traveled")

0

Java不支持您想要的语法。

也许在someFunction(int)的开头,您可以检查传入的值,并在不喜欢传入值时分配不同的值。

if (ttt == 0) ttt = 5;

请注意,这个问题似乎与安卓无关,并且标签不当。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接