gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:54:52 25 4
gpt4 key购买 nike

我有一个类,测量

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()运算符fun?
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"
}

长度是扩展Measurement的简单抽象类。

我想让 -Inches(5)返回 Inches(-5),但对于我创建的任何其他类都具有该属性,例如 -Degrees(30)返回 Degrees(-30)。有什么办法可行吗?我已经尝试过泛型,但最终却陷入了僵局。

最佳答案

如果使Measurement可克隆,则可以对其进行克隆并将其转换(LOL)到Measurement

abstract class Measurement : Cloneable {
abstract val units: String
abstract val value: Number

fun unaryMinus() : Measurement {
val measurement = this.clone() as Measurement
return measurement
}
}

关于kotlin - 创建未知类型子类的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48723880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com