java在创建新方法的同时创建新对象,这怎么可能呢?
所以我看了一个教程,看到了这行代码:
Thread timer = new Thread() {
@Override
public void run(){
// etc....
}
}
这里发生了什么?他们正在创建Thread类的新对象,并在创建该对象时声明方法运行?这怎么可能?我的理解是一个对象从它的类中得到了它的方法
你可以在下面搜索框中键入要查询的问题!
所以我看了一个教程,看到了这行代码:
Thread timer = new Thread() {
@Override
public void run(){
// etc....
}
}
这里发生了什么?他们正在创建Thread类的新对象,并在创建该对象时声明方法运行?这怎么可能?我的理解是一个对象从它的类中得到了它的方法
# 1 楼答案
这种机制被称为匿名类。所以,您可以通过实现所有Abstract成员来声明类的新实例。 在这段代码中,您可以通过实现public void run()方法来实现线程的匿名实例,这样您就可以在主体内部声明您的功能
更多信息请点击此处:https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
# 2 楼答案
这是一个Anonymous Class。它定义/创建类,但在这个地方重写或实现该类中的方法。无法在其他位置调用/创建匿名类
当您的程序运行定义了该匿名类的代码时,它将使用您在其中定义的方法创建该类的对象。对所创建对象的那些方法的任何后续调用都将使用您定义的重写方法
这可以用于类(如果它们不是
final
)、抽象类和接口