使用 commons-beanutils 访问嵌套 bean 时,有什么方法可以防止 NPE?这是我的代码:
new BeanUtilsBean().getProperty(human, "parent.name");
在这种情况下,我想getProperty()
要么返回空字符串(“”),human.getParent() == null
要么以其他方式处理它,而不是抛出 NPE。
使用 commons-beanutils 访问嵌套 bean 时,有什么方法可以防止 NPE?这是我的代码:
new BeanUtilsBean().getProperty(human, "parent.name");
在这种情况下,我想getProperty()
要么返回空字符串(“”),human.getParent() == null
要么以其他方式处理它,而不是抛出 NPE。
PropertyUtils
有一个嵌套属性的特定方法,getNestedProperty(...)
通过抛出 a 来处理 NPE NestedNullException
,这可能(?)对眼睛更好。
这是Javadoc。
如果其他人正在寻找答案
Guia g = new Guia();
GuiaParticipante gp = new GuiaParticipante(1);
g.setTbGuiaParticipanteCollection(Collections.singletonList(gp));//comment this line to test
String name = "tbGuiaParticipanteCollection[0].codParticipante";//the expression itself
Resolver resolver = new DefaultResolver();//used to "clean" the expression
if (resolver.isIndexed(name)) {
String property = resolver.getProperty(name);//remove the [0].codParticipante
if (PropertyUtils.getProperty(g, property) != null) { //get the collection object, so you can test if is null
String cod = BeanUtils.getNestedProperty(g, name); //get the value if the collection isn't null
System.out.println(cod);
}
}