gpt4 book ai didi

java - 如何在隐式 long 到 double 转换时产生编译错误?

转载 作者:搜寻专家 更新时间:2023-10-31 20:02:22 27 4
gpt4 key购买 nike

当“long”被隐式转换为“double”时,有没有办法让 Java 编译器产生一个错误,因为这会导致数据丢失?

编辑:我不能接受亚历克斯的回答的原因是它违背了我的目的。我想做的是创建一个最小“仿函数”API,通过直接支持原始类型而不是仅支持使用泛型的对象类型,不会导致垃圾。但是为了保持接口(interface)的数量少,我想使用尽可能少的类型。只有 double 和 Object,对于参数和返回值,我支持(几乎)所有类型而不会导致垃圾,也不会丢失任何数据(boolean 不会转换为 double,但也不会通过自动装箱导致垃圾,AFAIK,所以没关系明确支持它)。由于除 boolean 和 long 之外的所有原始类型都可以安全地隐式转换为 double,因此我几乎满足了所有需求。

这就是问题的来源:如果我不在该 API 中添加对 long 的明确支持,如何完全防止使用 long,因为它会导致错误?当然,使用 java.lang.Double 而不是 double 会导致垃圾,因此使 API 毫无意义。

在有人问之前,我会说我想在实时 Android 游戏中使用该 API,与 JVM 不同,“垃圾”是一个真正的问题。

最佳答案

不,这是不可能的。根据 Java 语言规范,longdouble 被认为是一个加宽转换。它永远不会触发编译或运行时错误。

(JLS, section 5.1.2) Despite the fact that loss of precision may occur, a widening primitive conversion never results in a run-time exception (§11.1.1).

关于java - 如何在隐式 long 到 double 转换时产生编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265668/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com