由于存在有限多个浮点数并且可以比较每个可能的这样的数字对(我假设),所以必须始终存在数字'b',这是
即"下一个"较小的浮点数代表.我怀疑是否:
试
float smaller(float a) return a - 0.00...001f;
Run Code Online (Sandbox Code Playgroud)
在我看来,这可能不适用于所有可能的输入,但我可能是错的,所以这就是为什么我转向你们.任何帮助都是有意义的.
我使用的库包含某种对象类型LackingObject(某种类型),它缺少类型Ext(某种类型)的属性。如果我能够更改LackingObject类,我只需添加一个 type 属性Ext,但LackingObject不能更改,也不能扩展。我现在在语言中所做的C或者C++是创建一个Map映射LackingObjects到 的语言Exts,在 Java 中,它会(有点等效)看起来
Map<LackingObject, Ext> object_extension = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
所以每当我LackingObject第一次在我的代码中遇到 a时,我可以调用
LackingObject o = ...;
Ext value = compute_value_for(o, ...);
object_extension.put(o, value);
Run Code Online (Sandbox Code Playgroud)
然后,为了回忆那个添加的属性,我会打电话
Ext resolved = object_extension.get(o);
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用,因为默认HashMap行为是将Object::hashCode, not的结果映射Objects到值,所以如果我有两个(除了Ext值)equal LackingObjects,它们不能都是java.util.HashMap.
问题:在 Java 中,是否至少存在以下一项:
一种让标准库将对象实例映射到值的方法?
一种接收对象实例的唯一标识符的方法?
我发现一个 7 年前的帖子与这个主题有些相关,但我希望这些年来情况有所改变。
最后的方法是创建一个包装类,
class Wrapper{
LackingObject o; …Run Code Online (Sandbox Code Playgroud)