Nested Ternary Operator

I was going through some of my old Java code and found this interesting piece of code. It’s basically alternative way of creating switch structure.

  public Object getValueAt(int row, int col) {
    Person person = data.get(row);
    return 
      col==0? person.getFirstName() 
      : col==1? person.getLastName() 
      : col==2? person.getAge()            
      : col==3? person.getAddress()
      : null; 
  }

Cons:

  • unlike switch, there is no compile time error for duplicated cases
  • this is not a standard way of dealing with different values of a variable so you could leave wondering the person that will read your code

Pros:

  • more control over branching logic since expressions are used (switch must use constants as case values)
  • this is not a standard way of dealing with different values of a variable so you could be seen as hacker in the eyes of the person that will read your code ;)