匿名内部类 anonymous inner class
匿名内部类匿的是什么?
匿的是类名,匿的是接口Runnable的实现类Thread的类名。
不用再重新创建一个类了,但是因为我没有类名,就用我爸爸(父类或者父接口)的名字代替,这便是格式newThread(){}的由来。这就是匿名内部类。
参考文章:java匿名启动线程_使用匿名内部类:来创建线程的两种方式
技巧:使用idea作为IDE的话可以通过快捷键实现匿名内部类和lambda表达式的互转
package com.example.anonymousInnerClass;
/**
* 匿名内部类的使用
* 以线程的创建为例
*/
public class TestAnonymous {
public static void main(String[] args) {
// 没有类名,直接拿父类或父接口当类名??
/* 匿名内部类匿的是什么?
匿的是类名,匿的是接口A的实现类B的类名。
不用再重新创建一个类了,但是因为我没有类名,就用我爸爸(父类或者父接口)的名字代替,这便是格式newA(){}的由来。这就是匿名内部类。*/
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("---");
}
}).start();
// replace with lambda
new Thread(() -> System.out.println("---")).start();
// expand lambda body to {...} 展开
new Thread(() -> {
System.out.println("---");
}).start();
// replace lambda with anonymous class
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("---");
}
}).start();
}
}