【发布时间】:2017-02-08 07:13:57
【问题描述】:
我正在为我正在写的东西处理 Class 类型而苦苦挣扎,答案可能涉及泛型,但我有点坚持正确的解决方案应该是什么。
我有一个 Scala 类 Vehicle,它有几个子类(Car、Bus、Train、Motorcycle 等):
class Vehicle {
...
}
class Car extends Vehicle {
...
}
class Motorcycle extends Vehicle {
...
}
我现在正在尝试编写一个实用方法,可以将 String 映射到 Vehicle 子类(即 Class 它是,不是该类的实例):
object VehicleUtils {
def mapToVehicleType(vehicleType : String) : Vehicle = {
var vType : Vehicle = null
if(vehicleType == "car") {
vType = Car
} else if(vehicleType == "motorcycle") {
vtype = Motorcycle
} else if(...) {
...etc.
}
vType
}
}
问题是我混淆/模糊了类型与实例。我不希望mapToVehicleType 方法返回一个instance,例如Car。如果提供“car”作为输入等,我希望它简单地返回Car 类。任何人都可以发现我出错的地方以及解决方案是什么。如果可能的话,我还想使用 Scala Options,因为 mapToVehicleType 方法当然可以返回 null。
【问题讨论】:
-
您能更具体地说明您要做什么吗?您的方法返回
Vehicle类型的对象,而不是类(类型)。类(类型)不是对象,不能返回,它们存在于平行宇宙中。
标签: scala generics introspection