Methods QueryDsl,使用Java或Groovy使方法级联空安全的优雅方法

Methods QueryDsl,使用Java或Groovy使方法级联空安全的优雅方法,methods,groovy,nullpointerexception,querydsl,cascading,Methods,Groovy,Nullpointerexception,Querydsl,Cascading,If在遍历级联方法时经常会遇到npe,这些方法在路径的某个地方可能为null。例如,我想查询客户的“问候”属性 ConstructorExpression giftCE = ConstructorExpression.create(Gift, order.a.b.c.salutation ) a、b或c中的任何一个或全部可能为空,从而导致NPE 在Java或Groovy中防范此类NPE的最佳“querydsl”方法是什么 (我不确定Groovy的Elv

If在遍历级联方法时经常会遇到npe,这些方法在路径的某个地方可能为null。例如,我想查询客户的“问候”属性

     ConstructorExpression giftCE = ConstructorExpression.create(Gift,
            order.a.b.c.salutation
    )
a、b或c中的任何一个或全部可能为空,从而导致NPE

在Java或Groovy中防范此类NPE的最佳“querydsl”方法是什么


(我不确定Groovy的Elvis op是否在querydsl语句中涵盖了这种情况)

您可以使用字段访问器而不是最终字段。这样你就不会遇到NPE了

我不确定是否可以在Groovy中将它们与字段/属性语法一起使用,因为它们不是getter

在你的情况下,它将成为

ConstructorExpression giftCE = ConstructorExpression.create(Gift,
    order.a().b().c().salutation
)

我猜ConstructorExpression.create严格拒绝将属性设置为null。所以,即使我在某个点或另一个点使用Will Ps解决方案,a.b.c.saltation本身也可能为null,这会导致com.mysema.query.types.ConstructorExpression.create(ConstructorExpression.java:79)上的java.lang.NullPointerException是的,null参数无效,在您的情况下也不需要。