我有一个类,测量
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/