首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从内部匿名类访问外部匿名类的字段

从内部匿名类访问外部匿名类的字段,是 Java 语言中的一种特性。在 Java 中,匿名类可以访问外部类的成员变量,但是不能访问外部类的局部变量。为了让外部匿名类访问内部匿名类的字段,可以将内部匿名类的字段定义为 final 类型,这样就可以在外部匿名类中访问了。

例如,以下代码展示了如何在外部匿名类中访问内部匿名类的字段:

代码语言:java
复制
public class OuterClass {
    private int outerVar = 10;

    public void outerMethod() {
        final int innerVar = 20;

        Runnable innerRunnable = new Runnable() {
            public void run() {
                System.out.println("Inner class: " + innerVar);
            }
        };

        Runnable outerRunnable = new Runnable() {
            public void run() {
                System.out.println("Outer class: " + outerVar);
                System.out.println("Inner class: " + innerVar);
            }
        };

        innerRunnable.run();
        outerRunnable.run();
    }
}

在上面的代码中,innerVar 是一个 final 类型的变量,因此可以在外部匿名类中访问。而 outerVar 是一个普通的成员变量,可以在内部匿名类和外部匿名类中访问。

输出结果如下:

代码语言:txt
复制
Inner class: 20
Outer class: 10
Inner class: 20

需要注意的是,在 Java 8 及以上版本中,可以使用 Lambda 表达式来简化匿名类的定义,例如:

代码语言:java
复制
public class OuterClass {
    private int outerVar = 10;

    public void outerMethod() {
        final int innerVar = 20;

        Runnable innerRunnable = () -> System.out.println("Inner class: " + innerVar);

        Runnable outerRunnable = () -> {
            System.out.println("Outer class: " + outerVar);
            System.out.println("Inner class: " + innerVar);
        };

        innerRunnable.run();
        outerRunnable.run();
    }
}

在上面的代码中,innerRunnableouterRunnable 都是使用 Lambda 表达式定义的匿名类,但是它们仍然可以访问外部类的成员变量和 final 类型的局部变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6分20秒

day15_面向对象(下)/17-尚硅谷-Java语言基础-创建接口匿名实现类的对象

6分20秒

day15_面向对象(下)/17-尚硅谷-Java语言基础-创建接口匿名实现类的对象

6分20秒

day15_面向对象(下)/17-尚硅谷-Java语言基础-创建接口匿名实现类的对象

12分31秒

day15_面向对象(下)/10-尚硅谷-Java语言基础-创建抽象类的匿名子类对象

12分31秒

day15_面向对象(下)/10-尚硅谷-Java语言基础-创建抽象类的匿名子类对象

12分31秒

day15_面向对象(下)/10-尚硅谷-Java语言基础-创建抽象类的匿名子类对象

5分31秒

039.go的结构体的匿名字段

13分40秒

040.go的结构体的匿名嵌套

11分20秒

第十九章:字节码指令集与解析举例/49-字段访问指令

12分0秒

第十八章:Class文件结构/23-字段表数据的解读

8分12秒

第十八章:Class文件结构/22-字段表集合的整体理解

8分19秒

第十八章:Class文件结构/20-访问标识

领券