2013-12-05 3 views
6

Предположим, что у меня есть длинный набор параметров одного типа для некоторого метода. У меня есть аналогичная операция для каждого параметра (если они не равны нулю). Предположим, что у меня нет контроля над сигнатурой метода, так как класс реализует интерфейс.Хороший способ null проверить длинный список параметров

Например .. что-то простое. Набор строк PARAMS ..

public void methodName(String param1, String param2, String param3, String param4){ 

    //Only print parameters which are not null: 

    if (param1 !=null) 
     out.print(param1); 

    if (param2 !=null) 
     out.print(param2); 

    if (param3 !=null) 
     out.print(param3); 

    if (param4 !=null) 
     out.print(param4); 
} 

Есть ли способ, что я могу перебирать список параметров Струнные, чтобы проверить, если они не являются недействительными и печатать их без необходимости ссылаться на каждую переменную по отдельности?

+0

Возможно, используя varargs, но это изменит семантику вашего метода. – Taylor

+0

Если интерфейс определен вами, я предлагаю изменить подпись метода на 'String ... param' или varargs по мере их вызова. – noMAD

+0

См. Http://stackoverflow.com/questions/10951671/best-way-to-check-null-for-objects-in-java/10951834#10951834 – Yanflea

ответ

12

Вы можете просто сделать

for (String s : Arrays.asList(param1, param2, param3, param4)) { 
    if (s != null) { 
     out.print(s); 
    } 
} 

или

for (String s : new String[] {param1, param2, param3, param4}) { 
    if (s != null) { 
     out.print(s); 
    } 
} 
3

Вы можете написать свой собственный метод с вар арг и вызывать его из функции имяМетода

check(param1, param2, param3)

static void check (String ... allParams) 
{ 
    for (String param : allParams) { 
     checkNotNull(param); // guava function checkNotNull 
    } 
} 
2

Самый короткий, о котором я мог думать, это

public void methodName(String param1, String param2, String param3, String param4) { 
    if(Arrays.asList(param1, param2, param3, param4).contains(null)) 
     throw new RuntimeException("Supply all params"); 
} 
Смежные вопросы