请哪位高手看看什么意思

时间:2021-02-04 17:29:10
public class GetPriority extends Object {
private static Runnable makeRunnable() {
Runnable r =  new Runnable() {   //*
public void run() {
for ( int i = 0; i < 5; i++ ) {
t = Thread.currentThread();
System.out.println("in run() - priority=" + t.getPriority() +", name=" + t.getName());
try {
Thread.sleep(2000);
} catch ( InterruptedException x ) {
// ignore
}
}
}
};
return r;
}

public static void main(String[] args) {
System.out.println(
"in main() - Thread.currentThread().getPriority()=" +
Thread.currentThread().getPriority());

System.out.println(
"in main() - Thread.currentThread().getName()=" +
Thread.currentThread().getName());

Thread threadA = new Thread(makeRunnable(), "threadA");
threadA.start();

try { Thread.sleep(3000); } 
catch ( InterruptedException x ) { }

System.out.println("in main() - threadA.getPriority()=" +
threadA.getPriority());
}
}
*处:Runnable是接口,怎么有构造函数?"Runnable r =  new Runnable() {..};"  是什么语法?那个";"为什么不能少? r是Runnable型的,可是接口不是不能实例化的吗?

1 个解决方案

#1


这个明白吗?
JButton button = new JButton("Hello");
button.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
     }
}
和你说的是一样的道理,r 是 Runnable类型的对象,并且在声名的时候已经实现了该接口中的唯一方法public void run(),也就是说new Runnable(){public void run(){}}是一个实现了接口的对象。所以这个和分开写是一样的。
Runnable r;
class threadA implements Runnable
{
    public void run()
    {}
}
r = new threadA();

#1


这个明白吗?
JButton button = new JButton("Hello");
button.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
     }
}
和你说的是一样的道理,r 是 Runnable类型的对象,并且在声名的时候已经实现了该接口中的唯一方法public void run(),也就是说new Runnable(){public void run(){}}是一个实现了接口的对象。所以这个和分开写是一样的。
Runnable r;
class threadA implements Runnable
{
    public void run()
    {}
}
r = new threadA();