我们能否创建实现了Runnable接口的对象?

9

我看到一段示例代码,其中使用了new Runnable() 并且它是匿名内部类。

Runnable runnable = new Runnable() {
public void run() {
int option = (int) (Math.random() * 4);
switch (option) {
case 0: x.a(); break;
case 1: x.b(); break;
case 2: y.a(); break;
case 3: y.b(); break;
}
}
};

非常感谢您的帮助。我对这方面还不是很熟悉。

2个回答

6

3
我想在这里添加一些内容,以使事情更加清晰。
在Java中,我们永远不能实例化接口。然而,我们可以通过接口类型引用实现该接口的对象。

在您分享的代码中,我们正在创建一个实现该接口的匿名类。我们正在创建一个匿名类型的对象,而不是接口Runnable的对象。

public class RunnableImpl implements Runnable{
 ...
}

public static void main(String[] args)
{
    Runnable runnable = new RunnableImpl();
    //Runnable test = new Runnable(); // wont compile
}

参考资料


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接