在 Ada 中,可以创建不兼容的等效数字类型:
type Integer_1 is range 1 .. 10;
type Integer_2 is range 1 .. 10;
A : Integer_1 := 8;
B : Integer_2 := A; -- illegal!
这可以防止意外的逻辑错误,例如将温度添加到距离中。
在Java中是否可以做类似的事情?例如。
class Temperature extends Double {}
class Distance extends Double {}
Temperature temp = 20.0;
Distance distance = temp; // Illegal!
EDIT
我发现了一个不相关的问题与相关的答案 https://stackoverflow.com/questions/48938276/java-creating-a-pseudo-native-type。这使用注释和编译时的特殊处理器在发生此类分配时发出警告。这似乎是最轻松的方法——不需要特殊的类来承担开发和执行方面的惩罚。
由于您在 Java 中指定的原因,包装对象并不常见。但这是可能的。
而不是使用extends Double
(这不起作用,因为Double是最终的)。您可以改为使用委托。
public class Distance {
private double distance;
// constructor, getter, setter
}
public class Temperature {
private double temp;
// constructor, getter, setter
}
那么下面的代码将会产生编译时错误。
Temperature temp = new Temperature(20.0);
Distance distance = temp; // Illegal!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)