Java 在访问者模式中处理null的有效方法

Java 在访问者模式中处理null的有效方法,java,design-patterns,Java,Design Patterns,假设您有一个对象集合,并且使用访问者模式-您如何最优雅地处理从集合中检索到的null?除了放置一个if(element!=null)元素之外,我看不到任何其他方法 如果你用的是番石榴或其他什么东西,你当然可以做一些调整,但这似乎有点过头了。除了在If(element!=null)元素中添加一个If(element!=null)元素之外,我看不到任何其他方法 如果你使用番石榴或其他东西,你当然可以做一些调整,但这似乎有点过头了。要么你的问题需要一些特殊类型的可访问对象,要么你试图对访问者模式施加太

假设您有一个对象集合,并且使用访问者模式-您如何最优雅地处理从集合中检索到的null?

除了放置一个
if(element!=null)元素之外,我看不到任何其他方法


如果你用的是番石榴或其他什么东西,你当然可以做一些调整,但这似乎有点过头了。

除了在If(element!=null)元素中添加一个
If(element!=null)元素之外,我看不到任何其他方法


如果你使用番石榴或其他东西,你当然可以做一些调整,但这似乎有点过头了。

要么你的问题需要一些特殊类型的可访问对象,要么你试图对访问者模式施加太多的责任。 如果您确实有不能访问的有意义对象,请尝试空对象模式

public class NullElement implements Element {

    public void accept(ElementVisitor visitor) {
        // noop
    }
}

要么您的问题需要一些特殊类型的可访问对象,要么您试图对访问者模式施加太多的责任。 如果您确实有不能访问的有意义对象,请尝试空对象模式

public class NullElement implements Element {

    public void accept(ElementVisitor visitor) {
        // noop
    }
}

或者,如果要将元素传递给访问者的
visit()
方法,只需首先检查
null
,然后跳过它。或者,如果要将元素传递给访问者的
visit()
方法,第一步只需检查
null
,然后跳过它。为什么要将null放在第一位?为什么要将null放在第一位?+1。比让每个访问者检查空值更好。当然,一个工作是计算空值的访问者是不起作用的,但是你可以找到解决方法。+1。比让每个访问者检查空值更好。当然,一个工作是计算空值的访问者是行不通的,但是你可以找到解决这个问题的方法。