- 코틀린의 모든 클래스는 Java의 Object 클래스처럼 Any 클래스에서 상속을 받는다.
- 제네릭 파라미터 타입의 공변성?, 반공변성?
- 레이파이드(reified) ?
- Any와 Nothing 클래스를 배우고 null 가능 참조와 연관된 연산자, 스마트 캐스트의 장점을 배운다.
Any와 Nothing 클래스
- 코틀린의 Any클래스는 Java의 Object에 대응되는 클래스이다.
- Nothing은 함수가 아무것도 리턴하지 않을 경우 리턴하는 클래스이다.
베이스 클래스 Any
- 코틀린의 모든 클래스는 Any를 상속받았다.
- Any 클래스는 최대한 유연성을 제공한다. 그러니 아주 제한적으로 사용해야만 한다.
- Any의 목적은 변수, 파라미터, 리턴타입을 Any로 정의하도록 하는게 아니고 공통으로 적용되는 메소드를 만들기 위해 존재한다.
- equals(), hashCode(), toString()같은 함수들
- let(), run(), apply(), also()같은 확장함수를 갖고 잇음
- Any가 Java 바이트코드에서 Object에 매칭되지만, Any 와 object가 동일일한 것은 아님
Nothing은 void보다 강력하다.
- Nothing을 함수의 리턴타입으로 사용한다면 절대로 리턴을 하지 않는다는 이야기
fun computeSqurt(n: Double): Doble {
if(n >= 0) {
return Math.sqrt(n)
} else {
throw RuntimeException("No negativve please")
}
}