繁体   English   中英

猜猜equals()中使用的运行时字段

[英]Guess at runtime fields used in equals()

是否可以在运行时以编程方式猜测我不拥有的对象的equals()方法使用的字段? 尤其是当equals()不使用getter来访问字段时:

    class OverrideEquals {
        String firstField;
        Integer secondField = 0;

        @Override public boolean equals(Object other) {
           if ( other instanceof OverrideEquals ) {
               return lastField.equals(((OverrideEquals) other).lastField);
           }
           return false;
        }
    }

在此示例中,有没有办法知道equals()在被调用时立即使用firstField而不使用lastField(字节码分析,代理等)?

反编译字节码将为您提供答案,但是更简单,更合理的方法是让代码所有者以某种方式注释其equals方法,例如@ChecksForEqualityOn(...)

您是否需要在运行时执行此操作的特定原因?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM