我有一个返回的方法long,有些情况下无法计算有效的结果.Double有NaN常数,这是不可表达的long.
我可以想到两个解决方案:
double,检查NaN并转换为long是否一切正常.是优先/更"爪哇"?还有其他方法吗/我错过了一些明显的东西吗?
您可以制作返回类型Long(盒装版本long)并返回null.
任何返回 NAN 的应用程序都不符合设计观点,原因是 NAN 意味着发生了一些异常情况,因此您应该抛出像 IllegalStateException 或 EntityNotFoundException 这样的异常,以便调用者知道发生了什么而不是 NAN。
如果您的应用程序接受大于 0(零)的所有内容作为有效值,那么您可以返回负数而不是 NAN,这将指示到达的异常路径,如果您不希望抛出异常,尽管我觉得抛出异常是最好的这样的场景,
我不建议使用 null 来表示 NaN 值。如果您跳过空检查,稍后很容易导致 NullPointerException。(而且由于隐式拆箱,这种 NullPointerException 可能很难被发现。您可能无法直接看到什么可以为 null。)否则,使用 NaN 值进行操作是有意义的:NaN+x=NaN,NaN*x=NaN。
在我看来,抛出异常、使用 double (顺便支持 NaN)或使用自己的类更好。