Java反射等于问题

Kar*_*arl 1 java reflection equals

有一天,有人可以帮我解决这个问题.

我有2个Stock Objects,我想比较运行时的属性.一个实例是缓存实例,另一个是刚刚传递到我的系统的新库存实例,它可能与缓存实例相同或不相等.请参阅下文,其中m是类Stock中的方法,stock是Stock的实例

try {

// I want to compare these two objects, return type of m may vary
Object result = m.invoke(stock);
Object cacheResult = m.invoke(stockCache.get(ticker));

// The return type of m may vary but is known at runtime
Class returnType = m.getReturnType();

// I assume I need to cast before .equals() will work correctly
if(result.equals(cacheResult)) {
    // Will this work or do I need to cast
}

  }catch (Exception ex) {
 }
Run Code Online (Sandbox Code Playgroud)

编辑:对于那些问我为什么使用反射的人,我使用反向ajax框架DWR,我试图将html id属性映射到我的对象属性,允许我用他们关联的HTML id值注释我的属性.将对象推送到UI时,此方法将允许我仅推送已更改的属性而不是整个对象.

Ada*_*ter 7

你不应该投.Java会自动选择正确的equals方法.我建议您调试该行以查看Class每个对象是什么.

  • 它不是"不应该需要施放",你不需要施放.Java将在运行时确定并调用正确的equals(Object)方法. (2认同)