public boolean equals(Object obj) { if (!(obj instanceof LiteralExpression)) { return false; } LiteralExpression other = (LiteralExpression) obj; Object otherLiteral = other.getValue(); if (value == null) { return otherLiteral == null; } if (value.getClass().isAssignableFrom(otherLiteral.getClass())) { return value.equals(other.getValue()); } if (value instanceof Number) { if (otherLiteral instanceof Number) { Number myNumber = (Number) value; Number otherNumber = (Number) otherLiteral; return myNumber.doubleValue() == otherNumber.doubleValue(); } } // Okay we are into String Compare land! String myString = value.toString(); String otherString = otherLiteral.toString(); return myString.equals(otherString); }