创建未知类型的子类的新实例

时间:2018-02-10 17:59:22

标签: kotlin

我有一个班级,测量

package robokt.measurement

abstract class Measurement : Number() {
    /**
     * The abbreviation for this unit of measurement
     */
    abstract val units: String
    /**
     * The abbreviation for this unit of measurement
     */
    abstract val value: Number
}

如果有其他类实现测量,我如何实现unaryMinus()运算符的乐趣,例如英寸:

package robokt.measurement.length

class Inches(override val value: Number) : Length() {
    override fun toCentimeters() = Centimeters(toDouble() * 2.54)

    override fun toFeet() = Feet(toDouble() / 12)

    override fun toInches() = this

    override fun toMeters() = Meters(toDouble() * 0.0254)

    override val units: String = "in"
}

Length是一个扩展Measurement的简单抽象类。

我希望-Inches(5)返回Inches(-5),但要为我创建的任何其他类创建,例如-Degrees(30)返回Degrees(-30)。这有可能吗?我尝试过泛型,最终成了死路一条。

1 个答案:

答案 0 :(得分:1)

如果您使Measurement可克隆,您可以克隆它并将其转换(LOL)回到Measurement

    <script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
    <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>