Это был один из тех дней, когда кто-нибудь может мне помочь с этим.
У меня есть 2 объекта Stock, с которыми я хочу сравнить свойства во время выполнения. Один экземпляр - это кэшированный экземпляр, другой - новый экземпляр, который только что был доставлен в мою систему, который может равняться или не совпадать с кэшированным экземпляром. Смотрите ниже, где 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) {
}
РЕДАКТИРОВАТЬ: Для тех, кто спрашивал о том, почему я использую отражение, я использую DWR обратного ajax-фреймворка и пытаюсь сопоставить свойство html id со своими свойствами объекта, что позволяет мне аннотировать свои свойства с помощью их связанного HTML значение идентификатора При перемещении объекта в пользовательский интерфейс этот метод позволит мне передавать только свойства, которые изменились, а не весь объект.