Scala引用类型参数

Scala引用类型参数,scala,Scala,有什么方法可以引用类型参数吗 例如,我想创建一个获取枚举子类的类,然后使用他: 我想要的例子: class MyEnum1 extends Enumeration{ type MyEnum=Value a1=Value("A1") b1=Value("B1") } class MyEnum2 extends Enumeration{ type MyEnum=Value a2=Value("A2") b2=Value("B2") } class

有什么方法可以引用类型参数吗

例如,我想创建一个获取枚举子类的类,然后使用他: 我想要的例子:

class MyEnum1 extends Enumeration{
    type MyEnum=Value
    a1=Value("A1")
    b1=Value("B1")
}

class MyEnum2 extends Enumeration{
    type MyEnum=Value
    a2=Value("A2")
    b2=Value("B2")
}


class UseType[T:<Enumeration]{
    val values=T.values
}
MyEnum1类扩展了枚举{
类型MyEnum=Value
a1=值(“a1”)
b1=值(“b1”)
}
类MyEnum2扩展了枚举{
类型MyEnum=Value
a2=值(“a2”)
b2=值(“b2”)
}

类UseType[T:我认为您需要在对象级别而不是类型级别工作,并将实例(可以是单例对象)传递到您的类中:

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扩展了枚举{
类型MyEnum1=值
val a1=值(“a1”)
val b1=值(“b1”)
}
对象MyEnum2扩展了枚举{
类型MyEnum2=Value
val a2=值(“a2”)
val b2=值(“b2”)
}
类UseType[T MyEnum1.ValueSet(A1,B1)
新的UseType(MyEnum2)/>MyEnum2.ValueSet(A2,B2)
不过,我不太清楚您为什么要这样做-您能解释一下您想要实现什么吗?您可能需要为
MyEnum1
MyEnum2
提供一个额外的共享特性,以便它们在您的代码中互换工作


另请参见和,以及-根据您的用例,您可能更喜欢使用密封的案例类。

您不是将实例(及其数据)与单独的类(蓝图)混为一谈吗?为什么要编写[T我不知道为什么我添加了
val
!-只有当您想将
T
作为
UseType
的属性引用时才需要它,例如
UseType(MyEnum1).T