관리 메뉴

hyeals study

[코틀린] 연산자 오버로딩 & 관례 - (2) 비교연산자 오버로딩 본문

코틀린

[코틀린] 연산자 오버로딩 & 관례 - (2) 비교연산자 오버로딩

hyeals 2020. 2. 25. 20:58

[동등성 연산자]

 

* 코틀린에서는 == 연산자 호출equals 메소드 호출로 컴파일

( != 연산자도 equals 호출로 컴파일됨)

 

* ==과 !=은 내부에서 인자가 널인지 검사하고 널이 아닌 경우에만 a.equals(b) 연산자를 호출함

☞ 따라서 "a==b" "a?.equals(b) ?: ( b == null)" 로 컴파일됨

 

* equals 메소드는 Any에 정의된 메소드이기 때문에 override가 필요함. 따라서 equals앞에 operator가 붙지 않아도 됨

 


[순서 연산자]

 

* 비교 연산자(>, <, >=, <=)는 compareTo 호출로 컴파일됨

"a > b" "a.compareTo(b) >= 0" 과 같음 

 

* compareTo 메소드도 eqauls 메소드와 마찬가지로 Comparable의 compareTo에 operator가 붙어 있으므로 오버라이딩 했을 때 operator를 붙이지 않아도 됨

 

 

 

본 게시물은 "Kotlin IN ACTION"을 참고함.

Comments