Scala泛型类[3;]参数
我有以下课程:Scala泛型类[3;]参数,scala,enums,Scala,Enums,我有以下课程: class MyClass[T <: Enum[T]](val clazz: Class[T]){ def dummy = println(clazz.toString) } 但它拒绝编译。实际上,我们传递了类[\u]的对象,它不满足类型边界。有没有办法告诉编译器我们实际上有一个类表示枚举 在Java中,我只需要执行强制转换,但我认为Scala有更好的方法来处理这些事情 顺便说一句 也不行 我无法更改方法的签名。在T上声明具有相同类型约束的方法,然后它将编译 def
class MyClass[T <: Enum[T]](val clazz: Class[T]){
def dummy = println(clazz.toString)
}
但它拒绝编译。实际上,我们传递了类[\u]
的对象,它不满足类型边界。有没有办法告诉编译器我们实际上有一个类
表示枚举
在Java中,我只需要执行强制转换,但我认为Scala有更好的方法来处理这些事情
顺便说一句
也不行
我无法更改方法的签名。在
T
上声明具有相同类型约束的方法,然后它将编译
def createMyClass[T <: Enum[T]](clazz: Class[T]) =
if(clazz.isEnum) new MyClass(clazz)
else throw new IllegalArgumentException(s"$clazz is not an enum")
def createMyClass[T class MyClass[T def createMyClass[T在T
上声明具有相同类型约束的方法,然后它将编译
def createMyClass[T <: Enum[T]](clazz: Class[T]) =
if(clazz.isEnum) new MyClass(clazz)
else throw new IllegalArgumentException(s"$clazz is not an enum")
def createMyClass[T class MyClass[T def createMyClass[T
我无法更改方法的签名
如有必要,可以使用存在类型
def createMyClass(clazz: Class[_]) =
if(clazz.isEnum)
new MyClass(clazz.asInstanceOf[Class[T] forSome { type T <: Enum[T] }])
else throw new IllegalArgumentException(s"$clazz is not an enum")
def createMyClass(clazz:Class[\uz])=
if(clazz.isEnum)
新的MyClass(clazz.asInstanceOf[Class[T]for some{type T
我无法更改方法的签名
如有必要,可以使用存在类型
def createMyClass(clazz: Class[_]) =
if(clazz.isEnum)
new MyClass(clazz.asInstanceOf[Class[T] forSome { type T <: Enum[T] }])
else throw new IllegalArgumentException(s"$clazz is not an enum")
def createMyClass(clazz:Class[\uz])=
if(clazz.isEnum)
新的MyClass(clazz.asInstanceOf[Class[T]for some{type T
def createMyClass(clazz: Class[_]) =
if(clazz.isEnum)
new MyClass(clazz.asInstanceOf[Class[T] forSome { type T <: Enum[T] }])
else throw new IllegalArgumentException(s"$clazz is not an enum")