【问题标题】:Can we create the object of Runnable being it interface我们可以创建 Runnable 的对象作为它的接口吗
【发布时间】:2015-12-24 15:47:45
【问题描述】:

我看到一个示例代码,其中使用了 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;
}
}
};

感谢任何帮助。我是新手。

【问题讨论】:

    标签: java


    【解决方案1】:

    我想在此处添加一些内容以使事情更清楚。
    我们永远无法在 java 中实例化接口。但是,我们可以通过接口的类型来引用实现接口的对象。

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

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

    另见

    【讨论】:

      【解决方案2】:

      是的。我们可以。这被称为匿名内部类。不仅Runnable,您还可以为任何接口匿名创建。

      推荐阅读本文

      https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

      【讨论】:

        猜你喜欢
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 2020-11-07
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 2013-02-02
        • 1970-01-01
        相关资源
        最近更新 更多