Tag:

使用reflection比较字段值

我试图以通用方式比较两个不同对象的字段值。 我有一个函数(如下所示),它接收两个对象,然后获取字段,然后比较循环中的字段,如果它们不相同,则将字段添加到列表中 – 这是正确的方法吗? public void compareFields(Object qa, Object qa4) throws FieldsNotEqualException { Field[] qaFields = qa.getClass().getFields(); Field[] qa4Fields = qa4.getClass().getFields(); for(Field f:qaFields) { for(Field f4:qa4Fields) { if(f4.equals(f)) { found = true; break; } else { continue; } } } if(!found) { report.add(/*some_formatted_string*/) //some global list throw new FieldsNotEqualException(); } } 我在谷歌搜索,我看到C#有一个像PropertyInfo类 – Java有这样的东西吗? 还有,有没有办法像f.getFieldValue() […]

Java,用reflection设置字段值

我正在使用一个不是开源的项目,我需要修改一个或多个类。 在一个类中是以下集合: private Map ttp = new HashMap(); 我需要做的就是使用reflection并在这里使用concurrenthashmap。 我试过跟随代码,但它不起作用。 Field f = ..getClass().getDeclaredField(“ttp”); f.setAccessible(true); f.set(null, new ConcurrentHashMap());

获取字段的名称

在Java中是否可以从实际字段中获取字符串中的字段名称? 喜欢: public class mod { @ItemID public static ItemLinkTool linkTool; public void xxx{ String fieldsName = *getFieldsName(linkTool)*; } } PS:我不是在寻找字段的类/类名或从字符串中获取字段。 编辑:当我看着它时,我可能不需要一个方法来获取字段的名称,Field实例(来自字段的“代码名称”)就足够了。 [例如Field myField = getField(linkTool) ] 在Java本身可能没有我想要的东西。 我将看看ASM库,但最后我可能最终使用字符串作为字段的标识符:/ 编辑2:我的英语不是很好(但即使用我的母语,我也有解释这个问题),所以我再添加一个例子。 希望现在会更清楚: public class mod2 { @ItemID public static ItemLinkTool linkTool; @ItemID public static ItemLinkTool linkTool2; @ItemID public static ItemPipeWrench pipeWrench; public void constructItems() { // […]