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();
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();
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();