java中的interface为什么可以new?

帅狗 发布于 2016/09/29 11:01
阅读 1K+
收藏 1

Runnable是一个接口,接口不是不能实例化的吗 为何如此写法可以通过?

Runnable run = new Runnable(){

    @Override
    public void run() {
          
    }

}

加载中
2
乌龟壳
乌龟壳
这是实现接口的匿名类,并非接口
0
求是科技
求是科技

你可以这么理解

Thread thread1 = new Thread(st2);
st2肯定是一个线程类 
public class SubThread2 implements Runnable{ @Override public void run() { for (int i = 0; i <= 100; i++) 
            {
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
    }
}
合起来写,就是你的那个样子了嘛。 

详情参考https://my.oschina.net/u/2312022/blog/744515



0
tqyin
tqyin
new的Runnable实现,只不过它的实现是一个匿名内部类
0
老菜鸟0217
老菜鸟0217
new 的是一个实现类,只不过是匿名的,你看不见!
0
业余编程人士
业余编程人士
这是内部类啊 你回去好好看看这一章节
0
B
BlanTangerine

匿名类实现了 那这种你不是更蒙蔽

new Thread(()->{
System.out.println("test");
System.out.println("fff");
}).start();

0
不是simaguo
不是simaguo
这是匿名类 ,参看函数式接口和Lambda表达式
0
demoeg
demoeg
实现接口的匿名类
0
uni7corn
uni7corn
可以当成是一个子类
0
ahdkk
ahdkk
偷懒的写法,匿名内部类,
返回顶部
顶部