有没有办法引用类型参数?
例如,我想创建一个类,该类获取枚举的Sub类,然后使用他: example of I wantd:
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
}你知道我该怎么做吗?
发布于 2014-03-31 23:45:55
我认为您需要在对象级别工作,而不是类型级别,并将一个实例(可以是单例对象)传递到您的类中:
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 -根据您的用例,您可能更喜欢使用密封的案例类。
https://stackoverflow.com/questions/22765062
复制相似问题