我一直在为这个烦人的问题苦苦挣扎一段时间,但没有找到一个优雅的解决方案。
假设我有这样一个类层次结构:
class StatWithBounds[A](val min: A, val max: A, val currentValue: A)
class StatBetween0And20(initialValue: Int) extends StatWithBounds[Int](0, 20, initialValue)
class PositiveStatOnly(initialValue: Int) extends StatWithBounds[Int](0, Integer.MAX_VALUE, initialValue)
class UncappedPercentage(initialValue: Int) extends StatWithBounds[Int](0, Integer.MAX_VALUE, initialValue)
initialValue 的复制/粘贴过于冗长。此外,如果我想做这样的事情:
class Strength(initialValue: Int) extends StatBetween0And20(initialValue)
class Intelligence(initialValue: Int) extends StatBetween0And20(initialValue)
class Piety(initialValue: Int) extends StatBetween0And20(initialValue)
多么糟糕的复制/粘贴(想象我还有 10 个子类)!
有没有一种优雅的方法来解决这个混乱的问题?