我的想法表明,我有两个类的通用代码,我应该把它作为一个干规则(不要重复你自己)。
class LongPersistence {
public void storeSomeNiceNumber(@NotNull Long l) {
if (l < 0) {
throw new RuntimeException("value should not be negative");
}
someNicePersistence.store(new String(l).getBytes());
}
}
public Long retrieveSomeNiceNumber() {
try {
byte[] bytesRepr someNicePersistence.retrieve();
Long value = Long.parseLong(new String(bytesRepr));
return value;
} catch (SomeNicePersistenceException e) {
return 0L;
}
}
}
所以我开始工作。。。
class Persistence<N extends Number> {
... 失败原因:
数字不能与0比较。
我不能将0返回到数字。
我认为这在定义良好的语言中应该是可能的,就像我到目前为止一直在考虑的java一样。我错过什么了吗?请建议如何使此算法对long和integer通用(并将其作为任意数字的a+任务)
1条答案
按热度按时间hvvq6cgz1#
多亏了@vgr,我明白我需要java.lang.number类中的数学逻辑,该类仅用于将数字存储为对象(类似于变量类型),因此我将数学外部化到另一个接口,在我看来这更有意义。
我已经将e限定为数字,但老实说,在这种情况下,不再需要它了。