Java可运行问题

Java可运行问题,java,interface,runnable,Java,Interface,Runnable,我目前正在学习Java课程,遇到了一些令人困惑的代码 例如: Runnable runnable = new Runnable() { public void run() { //doStuff } }; 我真的不明白这段代码在做什么 run方法如何与类的实例相关联 我在谷歌上搜索了“Runnable”,发现它是一个接口。我是通过在花括号之间声明run方法来实

我目前正在学习Java课程,遇到了一些令人困惑的代码

例如:

Runnable runnable = new Runnable()
        {
            public void run()
            {
                //doStuff
            }
        };
我真的不明白这段代码在做什么

run方法如何与类的实例相关联

我在谷歌上搜索了“Runnable”,发现它是一个接口。我是通过在花括号之间声明run方法来实现接口的吗?java中的任何接口都可以这样做吗

我可以使用一些链接/解释。谢谢大家!

它是一个匿名的内部类,正在实现接口
Runnable
。是的,您可以通过这种方式实现任何接口,尽管在任何给定的情况下您都有理由这样做或不这样做(缺乏可重用性是“不愿意”列中的一个大问题)。更多关于匿名类的信息,但这基本上是一种方便的形式:

// Define it
class Foo implements Runnable
{
    public void run()
    {
        // Do stuff
    }
}

// And then use it
Runnable runnable = new Foo();

…提供的
Foo
是一个内部(或“嵌套”)类。有关嵌套类的详细信息。

是的,您通过声明运行来实现接口。是的,它可以用于任何接口

这通常是在将实现传递给需要接口类型的参数的方法时完成的,并且没有合适的声明类。您可以当场实现该接口,然后代码就可以运行了。相当整洁

我在谷歌上搜索了“Runnable”,发现了这一点 这是一个接口。我是吗 通过以下方式实现接口: 在curly之间声明run方法 括号?这能为任何人做吗 java中的接口

对!

此代码正在实例化一个实现Runnable的对象。因为我们实际上无法构造接口,所以任何试图这样做的代码都必须在花括号中为接口的方法提供实现。我们并没有真正了解Java正在创建什么类来实现Runnable(这些是抽象术语)

如果您要执行以下操作:

Runnable runnable = new Runnable()
        {
            public void run()
            {
                System.out.println("I'm running");
            }
        };
runnable.run();

您将看到“我正在运行”作为输出。

在某些情况下,此示例代码将非常有用<代码>测试runna=new test()


+1.猜出发生了什么事。从你已经知道的逻辑推断是发展的核心技能。
class test implements Runnable{
        test(){
            Thread t = new Thread(this);
            t.start();
        }
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while(true){
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.print("asd");
            }
        }

    }