나는 다음 클래스가스칼라 일반적인 클래스 [_] 매개 변수
def createMyClass(clazz: Class[_]) =
if(clazz.isEnum)
new MyClass(clazz) //compile error is here
else throw new IllegalArgumentException(s"$clazz is not an enum")
를하지만 컴파일을 거부합니다. 사실, 타입 경계를 채우지 않는 Class[_]
의 객체를 전달합니다. 컴파일러에게 실제로 Class
이 Enum
을 나타내는 지 알 수있는 방법이 있습니까?
자바에서는 캐스팅 만 할 것이지만 스칼라는 그런 것들을 다루는 더 좋은 방법이 있다고 생각합니다. 나는 방법 '서명을 변경할 수 없습니다
new MyClass(clazz.asInstanceOf[Class[Enum[_]]])
이 작동하지 않는 BTW
, 하나
.
우수, 많이 감사합니다! – stella