оператор сравнения объектов в Java - PullRequest
0 голосов
/ 12 марта 2012

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

например. вариант использования:

void filterHotel( Object operator, float rating ) {

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

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Нет .Но это легко написать, рассмотрите возможность использования 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;
    }
}

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

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

1 голос
/ 12 марта 2012

Там нет ничего встроенного, но вы можете определить 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
}
...