2011-04-07 2 views
12

안드로이드 기능에 대한 기본 값을 설정하는 방법안드로이드 : 가변 인수

PHP 예 :

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

질문 ... 안드로이드에서 작업을 수행하는 방법이다

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

위의 해결책이 작동하지 않습니다. 어떻게 해결할 수 있습니까?

감사합니다.

+0

나는 자바로 할 수 있다고 생각하지 않는다. 그리고 정확하게 기억한다면, 이것이 자바 7에 있어야하는 기능이라는 것을 당연한 추측을 할 수 있습니다. 이 경우, 변수 'ttt'를 null로 검사 할 수 있으며, null 인 경우 , 값을 지정하십시오. –

+1

관련 항목 : [Java가 기본 매개 변수 값을 지원합니까?] (http://stackoverflow.com/questions/997482/does-java-support-default-parameter-values) – eldarerathis

+0

[Java 선택적 매개 변수] (http : /stackoverflow.com/questions/965690/java-optional-parameters) –

답변

10

아니요, Java는 함수 매개 변수의 기본값을 지원하지 않습니다. 여기에 언어 기능을 빌려주는 것에 대한 흥미로운 글이 있습니다 : http://java.dzone.com/news/default-argument-values-java

+0

나는 네이티브 함수가 어떻게 든 그것을 지원한다고 생각했지만 실제로 기억할 수는 없다 ...또는 예를 들어 JSONArray는 String, JSONTokener x, Collection 컬렉션 또는 빈 ... JSONArray를 사용할 수 있습니다. –

+0

String []을 내부에 넣고 인수를 추가하거나 제거 할 수 있습니다. .. –

+0

이 문서에서는 훌륭한 해결 방법입니다 ... 감사합니다! –

0

자바는 원하는대로 할 수있는 구문을 지원하지 않습니다.

아마도 된 SomeFuncion (INT)의 시작에, 당신은 입력 값을 확인하고 당신이오고, 마음에 들지 않는 부분이 있으면 다른 값을 할당 할 수 있습니다.

if (ttt == 0) ttt = 5;

유의하시기 바랍니다이 질문에 나타납니다 안드로이드와 아무 관련이 없으며 부적절한 태그가 붙어 있습니다.

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

1

당신은 함수를 오버로드 할 수 있습니다. 오버로드도 괜찮지 만 여러 인수에 대한 기본값이 필요한 경우 기본 인수를 가능한 한 많이 조합하여 여러 가지 메소드를 작성하게됩니다. 예를 들어 3 개의 인수에 기본값을 갖기를 원한다고 가정하십시오. 당신은 그래서 여기 내가 나를 위해했던 해킹, 당신도 내가 여기 알아

false 
true 

결과 위의 코드는 genrate 것

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

사용할 수있는이

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

로 끝날 것 예 java-default-parameter-values

2

이렇게하면 (3 도트로) :

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