6

I was wondering whether its possible in java to evaluate multiple variables together in if-else condition like in python.

actual code

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

dummy code

if(abc && xyz !=null)
{// will it be possible}
Community
  • 1
  • 1
agpt
  • 4,887
  • 9
  • 45
  • 85

5 Answers5

19

FIRST DRAFT

You can write smth like this:

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

then you could use it like:

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

UPDATE 1:

I came up with a new idea, write function using varargs like:

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

usage: (you can pass to function multiple arguments)

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

UPDATE 2:

The best approach is to use library apache commons ObjectUtils, it contains several ready to use methods like:

jtomaszk
  • 5,583
  • 2
  • 26
  • 39
7

the only way this would work is if abc was a boolean (and it wouldn't do what you're hoping it would do, it would simply test if abc == true). There is no way to compare one thing to multiple things in Java.

Yevgeny Simkin
  • 26,055
  • 37
  • 127
  • 228
1

It's Impossible in java, you can use Varargs:

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

See also:

Community
  • 1
  • 1
Rong Nguyen
  • 3,913
  • 4
  • 25
  • 50
1

Its not possible to that in Java. Instead you can do something like this:-

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.
}

If any of the items is null, then the method will return true, else it'll return false. You can use it as per your requirements.

RainMaker
  • 41,717
  • 11
  • 78
  • 97
0

IMHO First is the better way and possible way.

Coming to second way ..if they are boolean values

if(abc  && xyz )
{//...}
Suresh Atta
  • 114,879
  • 36
  • 179
  • 284