2012-03-12 2 views
0

Есть ли какие-либо объектные представления этих операторов сравнения (<, < =, ==,> =,>,! =) В Java?Объекты сравнения операторов в java

E.g. Прецедент:

void filterHotel(Object operator, float rating) { 

    String query = "SELECT hotel.name from hotel where hotel.rating " + 
operator.toString() + rating;  
    // execute query 
} 
+1

Просто написать свой собственный, это займет 5 минут .. – paislee

+2

Почему а не просто 'String'? – Gowtham

+1

Java не C++. Вы не можете переопределить операторов в java. – DwB

ответ

3

Нет. Но это легко написать, рассмотреть возможность использования enum с пользовательским методом:

public enum Operator { 
    EQUAL("=="), 
    NOT_EQUAL("<>"), 
    GREATER_THAN(">"), 
    GREATER_THAN_OR_EQUAL(">="), 
    LESS_THAN("<"), 
    LESS_THAN_OR_EQUAL("<="); 

    private final String representation; 

    private Operator(String representation) { 
     this.representation = representation; 
    } 

    public String getRepresentation() { 
     return representation; 
    } 
} 

Pass например Operator.LESS_THAN и извлечь фактический оператор, используя operator.getRepresentation().

Также убедитесь, что пользователь не может помещать произвольную строку вместо operator, чтобы избежать .

1

Там нет ничего встраивается, но вы можете определить enum, что делает трюк:

public enum ComparisonOperator { 
    LT("<"), LE("<="), EQ("=="), NE("<>"), GE(">="), GT(">"); 

    ComparisonOperator(String symbol) { this.symbol = symbol; } 
    private final String symbol; 
    public String toSymbol() { return symbol; } 
} 

Тогда:

void filterHotel(ComparisonOperator operator, float rating) { 

    String query = "SELECT hotel.name from hotel where hotel.rating " + 
     operator.toSymbol() + rating;  
    // execute query 
}