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

标签 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 在那里不可见。

有什么解决办法吗?感谢您的帮助!

最佳答案

可见的,你只需要让它final:

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

更一般地说,匿名类(如您的CallBack)只能访问类外部的局部变量,前提是这些变量被声明为final

关于java - 匿名类方法中的变量可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344579/

相关文章:

java - Maven 不运行我的 testng.xml

java - Thread类的start方法如何调用子类的run方法

java - 使用Spring Integration for Inbound Adapter时如何检查SFTP连接是否成功

javascript - 在 Java 中使用 Selenium 与网页交互时遇到问题

java - 我的代码中不断出现错误 "java.util.InputMismatchException"

java - 如何从 OpenCV Java 中的 HoughLines 变换中检测矩形

java - Citrus XPath 验证找不到元素

java - Android Dateformatter 问题

java - 将用户提供的 javascript 代码从网页表单存储到数据库时的安全性

Java 相当于 C 代码