java这种书写方式?
虽然我经常遇到,但我不理解这种编写代码的方式:
Runnable r=new Runnable() {//<----- (braces start here?)
public void run() {
System.out.println("Hello");
}
}; // ?
这是什么? 请解释清楚
你可以在下面搜索框中键入要查询的问题!
虽然我经常遇到,但我不理解这种编写代码的方式:
Runnable r=new Runnable() {//<----- (braces start here?)
public void run() {
System.out.println("Hello");
}
}; // ?
这是什么? 请解释清楚
# 1 楼答案
这就是所谓的“匿名类”
# 2 楼答案
正如其他人提到的,这里创建的是一个匿名的内部类。具体来说,编写代码的人说:
# 3 楼答案
这是一个anonymous class声明——基本上是一个实现
Runnable
接口的类,以匿名嵌套类的形式内联声明和实例化请注意,您也可以使用相同的方式声明匿名子类:
还请注意,您可以在匿名类代码中使用封闭方法的变量,但仅当变量为
final
(因为匿名类实际上获得了变量的副本)时才可以使用# 4 楼答案
您可以这样做:
然后:
实现同样的目标。但是,代码的任何其他部分都不需要您创建的MyRunnable类。因此,不需要创建命名类。另一方面,您编写的代码正在创建一个匿名内部类,以便该类的实现正好在需要它的地方。它将不会在代码中的任何其他地方访问,但这就是想法,您不需要它在任何其他地方
# 5 楼答案
我将从这2300万个结果开始
基本上,它允许您定义实现或子类,而无需创建完全格式的类定义
编辑:为了你自己的利益,看看你是否能弄明白这是怎么回事
# 6 楼答案
这是一个匿名内部类。它使用大括号中的代码创建
Runnable
接口的实现。除了实现接口,您还可以扩展其他类。好的方面是,您可以在不显式创建单独类的情况下执行此操作,并且还可以在匿名内部类的主体中引用final
局部变量(包括参数)有关更多详细信息,请参阅Java tutorial,或者只搜索“匿名内部类”以加载相关页面