Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建不兼容的数字子类型_Java_Ada - Fatal编程技术网

Java 创建不兼容的数字子类型

Java 创建不兼容的数字子类型,java,ada,Java,Ada,在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

在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!
编辑


我发现了一个新的方法。这使用注释和编译时的特殊处理器在发生此类分配时发出警告。这似乎是最简单的方法——不需要特殊的类,因为它们会带来开发和执行方面的损失。

基于Java中指定的原因,包装对象并不常见。但这是可能的

而不是使用
扩展Double
(这不起作用,因为Double是final)。您可以改为使用委托

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!

你必须创建一个包装类来强制你的约束。