有没有办法引用类型参数?
例如,我想创建一个获得Enumeration的Sub类而不是使用他的类: 我想要的例子:
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
}
你知道我该怎么办?
答案 0 :(得分:2)
我认为您需要在对象级别而不是类型级别工作,并将实例(可以是单个对象)传递到您的类中:
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
提供额外的共享特征,以便它们在您的代码中互换使用?
另请参阅this question和this one以及this one - 根据您的使用情况,您可能更愿意使用密封案例类。