我正在尝试对 Cobol 系统进行建模的 Java 框架中工作。我有一个具有许多属性的类 StudentRecord。
class StudentRecord extend BaseRecord {
...
public CobolString firstName;
public CobolString lastName;
...
}
class CobolString {
...
private String content;
public setValue(String str){
content = str;
}
}
假设我有一个 StudentRecord 类型的实例 studentA,String 中的 firstName 值为“Max”。我想使用 Java 反射将属性 firstName 更新为“John”。通常,我这样做如下:
Class aClass = studentA.class;
Field field = aClass.getField("firstName");
field.set(studentA, new CobolString("John"));
因为这个框架是为 Cobol 建模的,所以它有一些奇怪的行为和要求。其中之一是我需要使用 CobolString 的 setValue() 方法为 firstName 设置新值,以确保系统正常工作。
例如:没有反射,它需要我做:
studentA.firstName.setValue("John");
通过反射,如果我这样编码,studentA 仍然有新的 firstName,但它对其他对象/方法变得陌生,不能与其他人一起工作!!!
那么如何使用 Java 反射为 firstName 设置新值来做同样的事情。我的意思是我如何从父对象 studentA 获取子对象 firstName,然后使用新值“John”对其调用方法“setValue”。
感谢帮助。