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