我有一个班级,测量
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)
。这有可能吗?我尝试过泛型,最终成了死路一条。
答案 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>