자 아래에는 trait 클래스로 Cloneable 과 Resetable이 있다.
trait Cloneable extends java.lang.Cloneable {
override def clone(): Cloneable = {
super.clone().asInstanceOf[Cloneable]
}
}
trait Resetable {
def reset: Unit
}
아래의 클래스를 활용하는 함수가 있다.
def cloneAndReset(obj: ?): Cloneable = {
val cloned = obj.clone()
obj.reset
cloned
}
하지만... 함수명으로 명시적으로 표현만 되어있을뿐 다른언어에 대한 제약이 없다. 그래서 문제이다. 이럴때 Compound Types를 활용하자
아래와 같이 활용하면 오직 Cloneable과 Resetable만 받을 수 있다.
def cloneAndReset(obj: Cloneable with Resetable): Cloneable = {
//...
}
'Development > Programming' 카테고리의 다른 글
[Scala] Generic Classes (0) | 2014.03.28 |
---|---|
[Scala] Sequence Comprehensions (0) | 2014.02.14 |
[Scala] Case Classes (0) | 2014.02.04 |
[Scala] 맛보기~! (2) (0) | 2014.02.03 |
[Scala] 맛보기~! (0) | 2014.02.03 |