Android: как установить значение по умолчанию для переменной аргумента - PullRequest
18 голосов
/ 07 апреля 2011

функция Android

Пример PHP:

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

Вопрос в том, как сделать это в Android ...

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

Решение, приведенное выше, неработа, как мне это сделать?

Спасибо!

Ответы [ 6 ]

13 голосов
/ 07 апреля 2011

Нет, Java не поддерживает значения по умолчанию для параметров функции. Здесь есть интересный пост о заимствовании возможностей языка: http://java.dzone.com/news/default-argument-values-java

11 голосов
/ 07 апреля 2011

Вы можете злоупотреблять перегрузкой следующим образом:

int someMethod() { return someMethod(42); }
int someMethod(int arg) { .... }
9 голосов
/ 03 ноября 2013

Не нужно ничего перегружать, просто напишите:

public int getScore(int score, Integer... bonus)
{
    if(bonus.length > 0)
    {
        return score + bonus[0];
    }
    else
    {
        return score;
    }
}
4 голосов
/ 12 января 2017

вы можете использовать 3 dots синтаксис:

public void doSomething(boolean... arg1) {
    boolean MyArg1= (arg1.length >= 1) ? arg1 : false;
}
1 голос
/ 19 августа 2016

Вы можете использовать перегрузку функции.С перегрузкой тоже все в порядке, но в случае, если вам нужны значения по умолчанию для нескольких аргументов, вы в конечном итоге создадите множество методов со всеми возможными комбинациями аргументов по умолчанию, для примера, который вы используете, представьте, что вы хотите иметь значение по умолчанию для 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-default-parameter-values ​​

0 голосов
/ 07 апреля 2011

Java не поддерживает синтаксис, который будет делать то, что вы хотите.

Возможно, в начале someFunction (int), вы можете просто проверить входящее значение и назначить другое значение, если вам не нравится то, что входит.

if (ttt == 0) ttt = 5;

Обратите внимание, что этот вопрос, по-видимому, не имеет отношения к Android, поэтому неправильно помечен.

...