2013-02-14 2 views
3

Groovy에서> = 연산자를 오버라이드하고 싶습니다. this 페이지를 찾았지만 아직 수행 방법을 잘 모르겠습니다. 속성 직렬 및 금액을 가진 클래스 은행권이 있으며 amount 속성에 대한 비교 기초를 구현하고 싶습니다. 당신은 >= 연산자를 대체하지 않습니다Groovy의 비교 연산자를 재정의하십시오.

+0

당신이'> ='를 식별 할 또는 당신은 또한'<', '>'등을 차단 하시겠습니까? – Will

+0

특정 연산자를 가로 채지 않아도되므로 모든 비교 연산자를 재정의하는 것이 좋습니다. – Dan

답변

5

, 당신은 compareTo 구현 :

class Foo implements Comparable { 
    int val 
    int compareTo(Object o) { return val <=> ((Foo) o).val } 
} 

f1 = new Foo(val: 5) 
f2 = new Foo(val: 10) 
println f1 <= f2 
=> true 
+0

어때 : int compareTo (def o) {val <=> o.val} ? – Dan

+1

@Dan,'def'는 매개 변수에 필요하지 않습니다.'int compareTo (o) {val <=> o.val}'= D – epidemian

+0

@Dan 물론, 어떤 종류의 오류를 되 찾을 지에 따라 다르다. 일반적으로 특정 클래스를 비교하는 경우 클래스 캐스팅 문제가있을 것입니다. 그렇지 않으면 인터페이스와 비교할 수 있지만 종종 선호도 문제입니다. –

관련 문제