我试图获取私有字段(属性)的值而不使用" get"方法即使存在这种方法。
有可能吗?
我在Freemarker get-method without "get"之后创建了几个示例:
示例1:成功使用" get" "私人"的方法字段
班级:
public class MyClass {
private String myField = "TestA";
public String getMyField() { return "from method " + myField; }
}
模板:测试:$ {myObject.myField}
BeansWrapper config:
bw.setExposeFields(true);
// bw.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
输出:"测试:来自方法TestA"
示例2:成功获得" public"字段
班级:
public class MyClass {
public String myField = "TestA";
public String getMyField() { return "from method " + myField; }
}
模板:测试:$ {myObject.myField}
BeansWrapper config:
bw.setExposeFields(true);
bw.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
输出:"测试:TestA"
示例3:无法获得"私有"的价值字段
班级:
public class MyClass {
private String myField = "TestA";
public String getMyField() { return "from method " + myField; }
}
模板:测试:$ {myObject.myField}
BeansWrapper config:
bw.setExposeFields(true);
bw.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
输出:例外"以下评估为空或缺失:==> myClass.myField"
答案 0 :(得分:0)
开箱即用的ObjectWrapper
- s(例如BeansWrapper
)都不允许阅读private
成员。 OTOH您可以实现自己的ObjectWrapper
或扩展现有的BeansWrapper
。