匿名内部类&lambda表达式

匿名内部类&lambda表达式

1.匿名内部类

  • 可以用于抽象类或者接口中,和普通类定义使用并无区别 只是一个无名的实现类 一次性使用 没有名字 所以是匿名内部类
  • 匿名内部类中只需要重写抽象方法即可
  • 常用于线程,集合
  • 抽象类或接口定义

抽象类或接口定义

public abstract class Inter {
    public abstract void method1();

    public abstract void method2();
}

使用类

public class Demo {
    public void demo(Inter inter) {
        inter.method1();
        inter.method2();
    }
}

测试

   public static void main(String[] args) {
        Demo demo = new Demo();
       //匿名内部类
        demo.demo(new Inter() {
            @Override
            public void method1() {
                System.out.println("method1 invoked ");
            }
            @Override
            public void method2() {
                System.out.println("method1 invoked ");
            }
        });
    }

2 lambda表达式

  • 仅用于接口中只有一个抽象方法时,匿名内部类可以简化为lambda表达式
  • @FunctionalInterface 函数式接口 凡是接口上面有这种注解的都表示里面只有一个抽象方法 都可以使用lambda表达式
  • jdk8以后

接口定义

public interface Inter {
    void method1(Integer a, String b);
}

使用类

public class Demo {
    public void demo(Inter inter) {
        inter.method1(16, "abc");
    }
}

测试类

    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.demo((a, b) -> {
                    System.out.println(a);
                    System.out.println(b);
                }
        );
    }

你可能感兴趣的:(JAVA基础,lambda,接口,java)