Scala引用了一个类型参数。
Scala中出现"Scala Refer to a type parameter"问题的原因是在代码中引用了一个类型参数。解决方法是在类定义中增加一个类型参数的上界,并在类的实例化中传递一个具体的实例。具体的解决方法如下:
object MyEnum1 extends Enumeration { type MyEnum1 = Value val a1 = Value("A1") val b1 = Value("B1") } object MyEnum2 extends Enumeration { type MyEnum2 = Value val a2 = Value("A2") val b2 = Value("B2") } class UseType[T <: Enumeration](val t: T) { println(t.values) } new UseType(MyEnum1) // > MyEnum1.ValueSet(A1, B1) new UseType(MyEnum2) // > MyEnum2.ValueSet(A2, B2)
不过,对于为什么要这样做,还不太清楚。你能解释一下你想要实现什么吗?你可能需要给`MyEnum1`和`MyEnum2`添加一个额外的共享特质,以便在代码中可以互换使用它们。
更多相关问题,请参考[这个问题](https://stackoverflow.com/questions/11067396)、[这个问题](https://stackoverflow.com/questions/4236251),以及[这个问题](https://stackoverflow.com/questions/1898932)。根据你的使用情况,你可能更喜欢使用sealed case classes。
对于为什么在[T <: Enumeration](val t: T)中添加了`val`,我不确定为什么我添加了`val`!如果你想将`t`作为`UseType`的属性引用,那么需要添加`val`,例如`UseType(MyEnum1).t`。