2012-03-12 149 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 2012-03-12 17:30:40

+2

爲什麼不只是一個「字符串」? – Gowtham 2012-03-12 17:31:56

+1

Java不是C++。你不能在java中重載運算符。 – DwB 2012-03-12 17:32:32

回答

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

通過例如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 
}