【发布时间】:2018-08-06 09:05:21
【问题描述】:
在 JVM 中,我想更改 Object 类的 toString 方法的行为以返回 getClass().getName(); 而不是 getClass().getName() + "@" + Integer.toHexString(hashCode());
我尝试了 Javassist 的 Hotswapper,但它需要在启动 tomcat 服务器时分配调试端口。有没有其他方法可以改变 JVM 中 Object 类的 toString() 的功能?
我的用例:我的 JVM 中的一些对象没有 toString() 实现。所以采用 Object.class 中的基本实现,这不会是唯一的(因为哈希码)。我有一个记录和测试环境,其中值需要是唯一的,只有这样它们才能 自动比较。
【问题讨论】:
-
在 Java 中修改所有类的行为对我来说听起来是个非常糟糕的主意。
-
你的问题被标记为 [mockito],这让我觉得你可能正在做测试。你能解释一下你为什么要这样做吗?听起来像是 XY 问题。
-
听起来像是对OOP的误解……
-
为什么要改变 Object 类的行为。
-
我的 JVM 中的一些对象没有 toString() 实现。采用 Object.class 中的 SO 基本实现,这不会是唯一的(哈希码的 bcaz)。我有一个记录和测试环境,其中值需要是唯一的,然后才能自动比较它们
标签: java tomcat proxy mockito javassist