2012-04-04 8 views
1

약간의 내용을 읽었습니다. 자바에서는 주어진 매개 변수의 원래 값을 변경할 수 없으며 메서드가 끝난 후에도이를 유지할 것으로 예상됩니다. 하지만이 작업을 수행하는 좋은 방법을 알고 싶습니다. 누군가이 방법을 사용하기 위해 내가 할 수있는 것에 대한 조언을 해줄 수 있습니까? 감사.매개 변수를 영구적 인 값으로 설정

/** 
* This will set values in the given array to be "" (or empty strings) if they are null values 
* 
* @param checkNull 
*/ 
public static void setNullValuesBlank(String... checkNull) { 
    for (int i = 0; i < checkNull.length; i++) { 
    String check = checkNull[i]; 
    if (check == null) { 
     check = ""; 
    } 
    } 
} 

편집

그래서 여러 사람이 언급 한 바와 같이 배열로 설정해야하고, 내가 처음부터 배열을 구성하는 경우는 잘 작동하지만, 그때 그것을하지 않으면 작동하지 않습니다.

/** 
    * This will set values in the given array to be "" (or empty strings) if they are null values 
    * 
    * @param checkNull 
    */ 
public static void setNullValuesBlank(String... checkNull) { 
    for (int i = 0; i < checkNull.length; i++) { 
    if (checkNull[i] == null) { 
     checkNull[i] = ""; 
    } 
    } 
} 

여기 그것이 작동하는 전화입니다 : 여기

는 고정 방법의

String s = null; 
String a = null; 
String[] arry = new String[]{s, a}; 
for (int i = 0; i < arry.length; i++) { 
    System.out.println(i + ": " + arry[i]); 
} 
setNullValuesBlank(arry); 
for (int i = 0; i < arry.length; i++) { 
    System.out.println(i + ": " + arry[i]); 
} 

여기 하지 작업을 수행 전화,하지만 나는 그것을 원하는 :

String q = null; 
String x = null; 
System.out.println("q: " + q); 
System.out.println("x: " + x); 
setNullValuesBlank(q, x); 
System.out.println("q: " + q); 
System.out.println("x: " + x); 

출력 :

q: null 
x: null 
q: null 
x: null 

답변

1

당신은 배열에 할당해야합니다

if (checkNull[i] == null) { 
    checkNull[i] = ""; 
} 

체크에 할당 배열을 변경하지 않습니다.

+0

나를 처음부터 배열을 구성 할 필요가 없습니다 할 수있는 방법이 있습니까? – kentcdodds

+0

정상적인 var args에서는 매개 변수의 개체가있는 배열이 메서드 호출을 위해 구성되기 때문에 원래 시나리오와 동일한 문제가 발생하므로 구성해야합니다. – MByD

+0

나는 내가 너를 따라 갔는지 모르겠다. 왜 안되는 지 이해할 수는 없지만, 네가 맞다고 생각한다. ... – kentcdodds

0
public static void setNullValuesBlank(String... checkNull) 
{ 
    for(int i = 0; i < checkNull.length; i++) if(checkNull[i] == null) checkNull[i] = ""; 
} 
+0

배열을 처음부터 만들 필요가없는 방법이 있습니까? – kentcdodds

+0

@kentcdodds 예, 문자열을 각각 매개 변수로 전달합니다. 즉,'setNullValuesBlank (str1, str2, str3); ' –

+0

내게 맞지 않는 이유로 (내 편집 참조). – kentcdodds

0

당신은 배열에 값을 저장해야합니다 :

import java.util.Arrays; 

public class NullCheck { 

    public static void main(final String[] args) { 
     final String[] sa = { null, null }; 
     System.out.println(Arrays.toString(sa)); 
     check(sa); 
     System.out.println(Arrays.toString(sa)); 
    } 

    private static void check(final String... a) { 
     for (int i = 0; i < a.length; i++) { 
      if (a[i] == null) a[i] = ""; 
     } 
    } 

} 
+0

처음부터 배열을 만들 필요가없는 방법이 있습니까? – kentcdodds

관련 문제