匿名类方法中的变量可见性

时间:2010-12-03 10:24:46

标签: java

我对XMLTool java库有疑问。我们考虑以下代码:

private void parse() {
    List<String> list = new ArrayList<String>();

    doc.gotoChild("Body")
       .gotoChild("ExternalListOfCodes")
       .forEachChild(new CallBack() {

            public void execute(XMLTag doc) {
                if (doc.getCurrentTagName().equalsIgnoreCase("UnitOfMeasure")){
                    //Here's the problem!                
                    list.add(
                        doc.gotoChild("UnitOfMeasureCode").getInnerText()
                    );
                }
            }
        }
}

有一个循环forEachChild,我想要实现的是将标记内容添加到列表中。当然,这是不可能的,因为变量list在那里不可见。

任何想法如何解决?谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

可见,您只需将其设为final

final List<String> list = new ArrayList<String>();

更一般地说,如果声明了这些变量CallBack,则匿名类(如final)只能访问类外部的局部变量。