首页 > 编程笔记 > Java笔记

Java匿名类的用法

Java 中调用某种方法时,如果该方法的参数是接口类型的,那么除了可以传入一个参数接口实现类的对象,还可以使用匿名内部类实现接口创建对象作为该方法的参数。

匿名内部类其实就是没有名称的内部类,在调用包含接口类型参数的方法时,为了简化代码,通常直接通过匿名内部类传入一个接口类型的参数,在匿名内部类中直接完成方法的实现。

匿名类的语法格式如下:
new 父类名{
    匿名内部类的实现部分
}
上述语法格式可以分解成两部分。其中,关键字 new 后面的内容是声明父接口的一个实现类,由于该类的声明在另一个类的内部,并且没有指定类名,因此称为匿名内部类。匿名内部类前面的关键字 new 用于创建该匿名内部类的对象,将该对象作为参数,传入目标方法中。

【实例】匿名内部类的应用。
// 定义一个接口
interface MathInterface {
    void result();
}

public class Demo {
    public static void main(String[] args) {
        int n = 66;
        // nValue()方法,使用匿名内部类实现接口
        nValue(new MathInterface() {
            // 实现result()方法
            public void result() {
                // 局部内部类、匿名内部类可以访问非final的局部变量
                System.out.println(n + "是n的值");
            }
        });
    }

    // 定义静态方法nValue(),接收接口类型的参数
    public static void nValue(MathInterface m) {
        // 调用传入对象m的result()方法
        m.result();
    }
}
运行结果为:

66是n的值

相关文章