[英]Why is the constructor of a class which implements Runnable Interface not called?
我尝试使用实现Runnable
Interface的类的构造函数。 但我很惊讶地发现它从未被调用过。 调用了run()
方法,但是从未调用过构造函数。 我写了一个简单的示例代码来显示这种现象。 任何人都可以解释为什么会这样吗?
public class MyRunner implements Runnable {
public void MyRunner() {
System.out.print("Hi I am in the constructor of MyRunner");
}
@Override
public void run() {
System.out.println("I am in the Run method of MyRunner");
}
public static void main(String[] args){
System.out.println("The main thread has started");
Thread t = new Thread(new MyRunner());
t.start();
}
}
将public void MyRunner()
更改为public MyRunner()
(无返回类型)。 public void MyRunner()
不是构造函数,它是一个方法。 构造函数声明没有返回类型。
你有一个默认的构造函数,因为你没有定义任何构造函数。 并且,默认的构造函数是在内部调用的。
构造函数不能具有返回类型。 在您的情况下, public void MyRunner() {}
是一种方法。 从您的构造函数签名中删除void。
Constructor
是一个特殊的方法,它没有return type
,其名称与类名相同,因此从方法名中删除void
以使其成为构造函数。
public class MyRunner implements Runnable {
public MyRunner() {
System.out.print("Hi I am in the constructor of MyRunner");
}
@Override
public void run() {
System.out.println("I am in the Run method of MyRunner");
}
public static void main(String[] args) {
System.out.println("The main thread has started");
Thread t = new Thread(new MyRunner());
t.start();
}
}
这将工作,您的构造函数将被调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.