当前位置:   article > 正文

Java匿名内部类的三种使用方式_java匿名内部类如何使用

java匿名内部类如何使用

1.### 需求:

​ 在控制台输出”HelloWorld”

interface Inter {
    void show();
}
class Outer{


    public static Inter method() {

        return new Inter() {
            @Override
            public void show() {
                System.out.println("HelloWorld");
            }
        };
    }


}
public class OuterDemo {
    public static void main(String[] args) {
        Outer.method().show();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

注:这种方式是将匿名内部类(接口实现类对象)作为方法method()的返回值return,因此在语法上return后的对象可以直接调用重写的接口方法show()。

2.### 需求:

​ 在测试类Test中创建A的对象a并调用成员方法methodA(),要求用两种方式实现

public class OuterDemo2 {
    public static void main(String[] args) {
        //1.普通调用方式
        A a = new A();
        a.methodA(new InterA() {
            @Override
            public void showA() {
                System.out.println("HelloWorld");
            }
        });
        //2.匿名内部类直接调用
        new InterA(){
            @Override
            public void showA() {
                System.out.println("HelloWorld");
            }
        }.showA();
    }
}

interface InterA {
    void showA();
}

class A {
    public void methodA(InterA a) {
        a.showA();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

3.### 需求:

​ 在测试类Test中创建B的对象b,并调用成员方法methodB

public class Test {
    public static void main(String[] args) {
        B b = new B(new InterB() {
            @Override
            public void showB() {
                System.out.println("HelloWorld");
            }
        });
        b.methodB();

        new InterB(){
            @Override
            public void showB() {
                System.out.println("HelloWorld");
            }
        }.showB();
    }
}

//定义一个接口
interface InterB {
    void showB();
}

//目标:调用成员方法methodB
class B {
    InterB b;
    public B(InterB b){
        this.b = b;
    }
    public void methodB(){
        b.showB();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

注:2、3中,匿名内部类分别实现了作为(接口实现类对象直接调用重写的接口方法)、作为对象由method()方法的形参或类的成员变量接收,并作为接口方法的调用主体的两种方法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/683176
推荐阅读
相关标签
  

闽ICP备14008679号