私が書いているものに対してClass
型を扱うのには苦労しています。答えにはジェネリックスが含まれるかもしれませんが、正しい解決策が何であるべきかについては固執しています。スカラメソッドのクラス型のオプションを返す
私はいくつかの子クラス(Car
、Bus
、Train
、Motorcycle
、など)を持つScalaのクラスVehicle
を持っている:
class Vehicle {
...
}
class Car extends Vehicle {
...
}
class Motorcycle extends Vehicle {
...
}
私が今までの文字列をマッピングすることができるユーティリティメソッドを記述しようとしています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
メソッドがのインスタンス(たとえば、Car
)を返すことは望ましくありません。入力として「car
」が提供されている場合は、単にCar
クラスを返すようにしたいと思います。可能であれば、メソッドがnull
を返すことができるので、Scala Options
も使用したいと思います。
あなたは何をしようとしているのか具体的になることができますか?あなたのメソッドはクラス(型)ではなく、Vehicle型のオブジェクトを返します。クラス(型)はオブジェクトではなく、返すことはできません。それらはパラレルユニバースに存在します。 –