java面向对象匿名内部类


Java中的匿名内部类是一种特殊的内部类,没有明确的类名,通常用于创建一次性的类或对象。

它的语法格式通常是在创建一个接口或抽象类的实例时使用,例如:

interface MyInterface {
    void doSomething();
}

public class MyClass {
    public void doAction() {
        MyInterface myInterface = new MyInterface() {
            @Override
            public void doSomething() {
                System.out.println("Doing something...");
            }
        };

        myInterface.doSomething();
    }
}

在上面的示例中,MyClass类中的doAction()方法创建了一个MyInterface接口的实例,并使用匿名内部类实现了doSomething()方法,然后调用了该方法。

需要注意的是,匿名内部类可以继承一个类或实现一个接口,但不能同时进行。同时,匿名内部类只能使用一次,因为它没有明确的类名,无法在其他地方重复使用。

除了在接口和抽象类的实例化中使用匿名内部类,还可以在其他场合使用匿名内部类。例如,可以在方法内部使用匿名内部类来实现一个事件监听器,如下所示:

public class MyButton {
    public void onClick(ClickListener listener) {
        // 触发按钮点击事件
        listener.onClick();
    }

    public interface ClickListener {
        void onClick();
    }
}

public class Main {
    public static void main(String[] args) {
        MyButton button = new MyButton();
        button.onClick(new MyButton.ClickListener() {
            @Override
            public void onClick() {
                System.out.println("Button clicked.");
            }
        });
    }
}

在上面的示例中,Main类中的main()方法创建了一个MyButton对象,并传入一个匿名内部类实现的ClickListener接口来处理按钮的点击事件。

使用匿名内部类可以使代码更加简洁,避免创建大量的实现类和重复的代码。但需要注意的是,匿名内部类通常只适用于比较简单的场景,复杂的逻辑和代码最好还是封装在单独的类中。


原文链接:codingdict.net