2012-08-30 1 views
2

나는 세 개의 문자열을 취하는 함수를 가지고 있으며 그 중 하나 또는 세 개 모두가 null 일 수 있습니다 (미리 알지 못함). 이것을 처리하는 가장 좋은 방법은 무엇입니까?java : 한 번에 여러 함수 매개 변수에서 null을 처리하는 방법은 무엇입니까?

기본 케이스는 이것이다 :

public String doStuff(String a, String b, String c) { 
    //do stuff 
} 

이이 문자열의에 널 (null)를 호출하면,이 오류가 얻을 :

-> doStuff("test", null, null) 

Unable to execute method public java.lang.String 
doStuff(java.lang.String,java.lang.String,java.lang.String) 
on object 1c52ac68 of class test with arguments {Wap:java.lang.String, null, null} of size 3 

내가이 과부하 수도 있겠죠을 모든 3 개의 입력에서 null의 가능한 순열이 있지만 더 좋은 방법이 있습니까?

+0

당신이 달성하기 위해 노력하고, 또는 어디 유효성 검사가 현재 발생하는 것을 명확하지 않다. –

+1

NULL 형식이 java.lang.String과 일치하지 않기 때문에 함수가 실행되기 전에 함수가 실패합니다. 그래서 함수 안에 넣지도 않습니다. – vasek1

+0

문자열이 null이면 여전히 3 개의 매개 변수를 모두 사용하여 메서드를 호출하고 있습니까? – Quinma

답변

1

당신은 그런 식으로 쓸 수 있습니다 :

int nulls=0; 
if(a==null) nulls+=1; 
if(b==null) nulls+=2; 
if(c==null) nulls+=4; 

다음은 널 (null)을 전환 : 등등

switch(nulls){ 
    case 0://no String is null 
    ... 
    break; 
    case 1://just a is null 
    ... 
    break; 
    case 5://(5=101b), a and c is null 
    ... 
    ... 
} 

하고 있습니다.

1

나는 당신의 문제를 해결 얻는 방법을 모르겠지만, 그냥 쉽게 확인 할 수 있도록하려는 경우 매개 변수 중 하나가 null의 경우, 당신은 유틸리티 기능을 확인 할 수 있습니다 :

public boolean verifyNotNull(Object.. objects) { 
    for(Object o : objects) { 
     if(o==null) return false; 
    } 
    return true; 
} 

그럼 당신은 함수에서이 유틸리티를 호출 할 수 있습니다

public String doStuff(String a, String b, String c) { 
    if(!verifyNotNull(a,b,c)) { 
     throw new MyException("..."); 
    } 
} 

어쩌면 AOP 너무 당신을 위해 뭔가를 할 수 .. 끝이 당신이 원하는 결과를 뭐죠

0

확실하지. 당신이 당신의 doStuff을 말한다면 단지 문자열 CONCAT을하고 당신은이 작업을 수행한다는 점에서 널 필요하지 않습니다 ..

doStuff(String a, String b, String c){ 
     String x = ""; 
     if(null!=a) x = x+a; 
     if(null!=b) x =x+b; 
     if(null!=c) x = x+c; 
     System.out.println(x); 
} 
관련 문제