【发布时间】:2012-06-17 06:30:03
【问题描述】:
我是 Java 新手。我很难理解anonymous class instance 和interface 之间的关系。参考this website中的例子:
// anonymous instance as a variable
Runnable r = new Runnable()
{
@Override
public void run()
{
//codes
}
};
Thread t1 = new Thread(r, "anonymous 1");
// anonymous instance as a parameter
Thread t2 = new Thread (new Runnable()
{
@Override
public void run()
{
//codes
}
}, "anonymous 2");
根据这个 SO 问题 (http://stackoverflow.com/questions/11069056/why-java-interface-can-be-instantiated-in-these-codes) 中的答案,我对匿名有了基本的了解类。
但是,我不明白这是什么:
Runnable r = new Runnable(){...};
在右边,我们创建了一个匿名类的实例,所以它是一个object of a class。在左侧,它是一个Interface 变量。
为什么可以将匿名类的实例分配给接口变量?
参考这个website:
Thread(Runnable target, String name)
似乎 Thread 期望第一个参数是一个接口变量。
【问题讨论】:
标签: java interface instantiation anonymous-class