2013-06-04 9 views
5

Zastanawiam się, czy jest możliwe w java do oceny wielu zmiennych razem w if-else stanie jak w python.Ocena wielu zmiennych razem w przypadku, gdy stan

rzeczywisty kod

if(abc!=null && xyz!=null) 
{//...} 

kod manekin

if(abc && xyz !=null) 
{// will it be possible} 
+1

AFAIK, nie jest to możliwe w Javie. –

+0

Niemożliwe! Możesz zobaczyć tutaj: http://www.dummies.com/how-to/content/how-to-use-if-statements-in-java.html –

+0

@RongNK Tak, zgadzam się z tobą. było dla mnie tylko wątpliwości :) – agpt

Odpowiedz

6

jedyny sposób to będzie działać, jeśli jest abc była logiczna (i nie zrobi tego, co masz nadzieję zrobiłby to, to po prostu sprawdzi, czy abc == true). Nie ma sposobu na porównanie rzeczy do wielu rzeczy w Javie.

0

IMHO Pierwszy to lepszy i możliwy sposób.

Jadąc w drugą stronę ..jeśli są boolean wartości

if(abc && xyz) 
{//...} 
11

PIERWSZY PROJEKT

Możesz napisać smth tak:

boolean notNull(Object item) { 
    return item != null; 
} 

następnie można go używać jak:

if (notNull(abc) && notNull(xyz)) { 
    //... 
} 

UPDATE 1:

wpadłem na nowy pomysł, funkcja pisać używając varargs jak:

boolean notNull(Object... args) { 
    for (Object arg : args) { 
     if (arg == null) { 
      return false; 
     } 
    } 
    return true; 
} 

Wykorzystanie: (można przejść do działania wiele argumentów)

if (notNull(abc, xyz)) { 
    //... 
} 

UPDATE 2:

Najlepszym podejściem jest użycie biblioteki apache commons ObjectUtils, zawiera kilka gotowych do użycia metod, takich jak:

+1

Tak, zrobiłem to w różnych miejscach .. :) – agpt

+0

Jak to jest inaczej? – squiguy

+0

@Squiguy faktycznie w wielu miejscach dla celów sprawdzania poprawności muszę napisać to samo, więc to dlaczego zapytałem, czy jest jakiś plan na przyszłość w java dla tego rodzaju :) – agpt

1

To Impossible w Javie, można użyć Varargs:

public boolean checkAnything(Object args...){ 
    for(Object obj args){ 
    if(...) 
    } 
    return ....; 
} 

Zobacz także:

2

Nie jest możliwe, że w Javie. Zamiast tego można zrobić coś takiego: -

public boolean checkForNulls(Object... args){ 
    List<Object> test = new ArrayList<Object>(Arrays.asList(args)); 
    return test.contains(null); // Check if even 1 of the objects was null. 
} 

Jeżeli którykolwiek z elementów jest null, wówczas metoda zwróci true, inaczej będzie to powrót false. Możesz go używać zgodnie ze swoimi wymaganiami.

Powiązane problemy