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

时间:2011-04-07 12:53:28

标签: java variables arguments default

Android功能

PHP示例:

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

问题是如何在android中做到这一点......

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

上述解决方案不起作用,我该怎么办?

谢谢!

7 个答案:

答案 0 :(得分:13)

不,Java不支持函数参数的默认值。这里有一篇关于借用语言功能的有趣帖子:http://java.dzone.com/news/default-argument-values-java

答案 1 :(得分:11)

您可以像这样滥用重载:

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

答案 2 :(得分:9)

不需要重载任何东西,只需写下:

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

答案 3 :(得分:4)

您可以使用3 dots语法:

public void doSomething(boolean... arg1) {
    boolean MyArg1= (arg1.length >= 1) ? arg1 : false;
}

答案 4 :(得分:1)

您可以使用重载功能。 重载也没问题,但是如果您需要多个参数的默认值,您最终将创建具有所有可能的默认参数组合的方法,对于您使用的示例,您想要为3个参数设置默认值。你最终会得到这个

    "dependencies": {
    "@angular/common": "2.0.0-rc.4",
    "@angular/compiler": "2.0.0-rc.4",
    "@angular/core": "2.0.0-rc.4",
    "@angular/http": "2.0.0-rc.4",
    "@angular/platform-browser": "2.0.0-rc.4",
    "@angular/platform-browser-dynamic": "2.0.0-rc.4",
    "@angular/platform-server": "2.0.0-rc.4",
    "@angular/router": "3.0.0-beta.2",
    "@angular/router-deprecated": "2.0.0-rc.2",
    "nativescript-angular": "next",
    "reflect-metadata": "^0.1.5",
    "tns-core-modules": "2.2.1",
    "email-validator": "^1.0.4",
    "nativescript-social-share": "^1.2.0"
  },
  "devDependencies": {
    "babel-traverse": "6.13.0",
    "babel-types": "6.13.0",
    "babylon": "6.9.0",
    "lazy": "1.0.11",
    "nativescript-dev-typescript": "^0.3.2",
    "typescript": "^1.8.10"
  }

所以这是我为我做的黑客攻击,你也可以使用

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

我在这里找到示例java-default-parameter-values

答案 5 :(得分:1)

您现在可以使用Kotlin在Android中完成此操作! Kotlin支持default arguments,因此您可以编写如下函数:

fun addTheBook(title: String, author : String = "No Name"){...}

然后您可以像调用它一样

addTheBook("The Road Less Traveled")

答案 6 :(得分:0)

Java不支持可以执行所需操作的语法。

也许在someFunction(int)的开头,你可以检查传入的值,如果你不喜欢它的内容,你可以分配一个不同的值。

if (ttt == 0) ttt = 5;

请注意,此问题似乎与Android无关,因此标记不正确。