【发布时间】:2011-04-27 15:12:42
【问题描述】:
我有一个显示用户帐户详细信息的视图。相应的活动通过 GWT 请求工厂询问服务器端代码(以检索用户帐户对象)。 View 接口扩展了 TakesValue
UserAccountProxy 有很多属性,因此它的代理引用了很多其他的代理对象。所以,例如我们可以有:UserNameProxy、UserPasswordProxy、UserRolesProxy等封装在UserAccountProxy中。 在某些情况下,几乎所有这些代理都可能为空(用户没有指定角色,用户没有头像,没有指定签名......)。 此外,相应的活动可能不会向请求工厂请求某些属性,然后这些属性也会为空。
如果这些属性(代理)中的任何一个不为空,则应使用适当的小部件将其显示在视图中。
避免 NullPointerException 的最简单、最丑陋的方法如下:
public void setValue(UserAccountProxy account) {
//getUserName() returns proxy which may be null
if (account.getUserName() != null) {
setUserNameWidget(account.getUserName());
}
//getUserPassword() returns proxy which may be null
if (account.getUserPassword() != null) {
setUserPasswordWidget(account.getUserPassword());
}
// (....)
}
当然,我想避免这种类型的编码,但我不知道如何以另一种方式进行。
提前感谢任何提示。
【问题讨论】: