0

我正在使用 JSoup,我正在做一些节点遍历。

String myString;
NodeTraversor articleNodeTraversor  = new NodeTraversor(new NodeVisitor() {

            @Override
            public void tail(Node node, int depth) {
                //Do some processing.
                                    myString += "foo";
            }

            @Override
            public void head(Node node, int depth) { 
                //Do some processing.
            }
        });

首先,这种编程叫什么?访客模式?其次,上面的代码只有在 myString 是全局的时候才有效。如何使我的字符串仅在创建它的方法中本地化,并且仍然使上述工作正常?

谢谢!

4

2 回答 2

1

您正在使用匿名类,因此它们只能访问其上下文之外的最终局部变量(假设它在方法中声明)和类的任何变量(静态或非静态)。您也可以在内部类中声明变量,但不允许静态非最终变量声明。

于 2012-06-14T04:05:18.430 回答
0

该块new NodeVisitor() {}被称为匿名间类。

您可以将块中的变量视为公共类。

于 2012-06-14T03:48:27.853 回答