接口能不能被实例化。 在匿名类中实例化~上代码:帮忙解释下..... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是匿名的内部类并不是FileNameFilter的实例化,而是定义了一个内部类,实现了accept接口,同时返回一个实现了接口的对象。该代码等效于class A implements FileNameFilter{public void accept(File f,String s){ //实现接口}}dir.list(new A()) new 接口或者抽象类(){ 方法}这种写法 返回的是接口或者抽象类的子类对象名称叫 匿名内部类 匿名内部实现类同下:Thread thread = new Thread(new Runnable(){ public void run(){ ... }}); 举个例子java.io.Serializable ser = new Serializable(){}; 关于JAVA内部类:一个内部类的定义是定义在另一个类内部的类。 存在它的原因是: 1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。即内部类实例对包含它的哪个类的实例来说,是特权的。 2.对于同一个包中的其他类来说,内部类能够隐藏起来,换句话说,内部类不管方法的可见性如何,那怕是public,除了包容类,其他类都无法使用它。 3.匿名内部类可以很方便的定义回调。 4.使用内部类可以非常方便的编写事件驱动程序。其实它真正的目的仅仅为了定义回调--进一步就是事件驱动。接口和回调:编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发生时回调对象上的方法。 可以参照一下,java.util.MAP,与java.util.HashMap. 你这个相当于实现 并复写FileNameFilter接口的 accept方法 swing里面实现监听 ,这种写法很多,去看看就懂了 路过,楼主的写法相当于写了一个类实现了FilenameFilter接口,只是这个类是没有指定名字的,后面会有{...}就是要重写FilenameFilter接口中的方法的,因为楼主的意图是只让这个类在此处用到,所以这种实践是良好的实践,可见楼主对Java了解较深,然后匿名的类用了new关键字就相当于创建了一个对象,所以这种实例化过程与单独编写一个类实现FilenameFilter接口的效果是相似的,只不过后者可以再多处用到,可以复用。 一些Java面试题,求答案 socket多线程文件传输,如何暂停 i = 2;i =i++;运行到这里之后为什么输出i的时候还是2,都运算完了,不就应该变成3了吗? 大家说说这是什么算法啊(五子棋游戏的AI部分) 关于Resourcebundle的问题,谢谢!!!!!!! 在java中怎么调用执行一个exe文件啊? java中科学计数法的问题 如何把一张图片下载到本地? 请教:俺只读侯捷先生翻译的《JAVA编程思想》可以达到什么样的境界? 【求助】javafx 怎样和后台线程交互 高手帮忙看下这段代码有什么问题 关于java内存泄露的一点小问题
并不是FileNameFilter的实例化,而是定义了一个内部类,实现了accept接口,同时返回一个实现了接口的对象。该代码等效于class A implements FileNameFilter
{public void accept(File f,String s)
{
//实现接口
}
}dir.list(new A())
{
方法
}这种写法 返回的是接口或者抽象类的子类对象
名称叫 匿名内部类
public void run(){
...
}});
存在它的原因是:
1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。即内部类实例对包含它的哪个类的实例来说,是特权的。
2.对于同一个包中的其他类来说,内部类能够隐藏起来,换句话说,内部类不管方法的可见性如何,那怕是public,除了包容类,其他类都无法使用它。
3.匿名内部类可以很方便的定义回调。
4.使用内部类可以非常方便的编写事件驱动程序。其实它真正的目的仅仅为了定义回调--进一步就是事件驱动。
接口和回调:编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发生时回调对象上的方法。