Java教程

Java匿名内部类

本文主要是介绍Java匿名内部类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

三种方式的演化

Thread构造方法如下

public Thread(Runnable target) {
        init(null, target, "Thread-" + nextThreadNum(), 0);
}

Runnable 是一个接口

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

调用对比:

public class App {
   public static void main(String[] args) {

      //default
      new Thread(new Task()).start();

      //匿名内部类
      new Thread(new Runnable() {
         @Override
         public void run() {
            System.out.println("002");
         }
      }).start();

      //Lambda表达式
      new Thread(() -> {
         System.out.println("003");
      }).start();
   }
}

class Task implements Runnable {
   @Override
   public void run() {
      System.out.println("001");
   }
}

匿名内部类 vs Lambda表达式


所以,不是所有使用匿名内部类的地方都可以使用Lambda表达式代替。
ref: https://www.geeksforgeeks.org/difference-between-anonymous-inner-class-and-lambda-expression/

这篇关于Java匿名内部类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!