匿名类,增强for循环

  • forearch简称为增强for循环,目的是为了简化for循环
    1
    2
    for(数据类型 每次循环的名称 : 循环对象){
    }
  • 匿名类
    之前一直以为一个方法method()只能传值进去,今天才发现原来对象也可以当做参数传进去。
    之前一直以为接口和对象都不能直接实例化为对象,都需要继承后才能实例化,今天才发现原来也可以,只要做成匿名类就好了。
    so,new bird。天真
    为啥接口可以直接实例化为对象,首先想想之前是咋做的。需要一个类去继承它,继承之后可以实例化,怎么继承?必须实现父类的方法。所以本质是实现方法,这也是为什么匿名类可以实例化的前提,那么实例这个接口就必须把方法实现。

    匿名类其实就是相当于实现接口或者实现抽象类的一个具体类

下面就是一个文件过滤的功能:找出家目录里以rc结尾的所有文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.File;
import java.io.FileFilter;

public class FilterFile{
public static void main(String[] args) {
File file=new File("/home/narcissus"); //File类实例化对象
//这个File[] 是个什么鬼?数组?可以这么写?
File[] grade=file.listFiles(new FileFilter() { //FileFilter接口的构造函数的匿名实例化
public boolean accept(File file) { //方法的实现,自动补全
if(file.getName().endsWith("rc")){
return true;
}
return false;
}
});

for(File f:grade) { //增强for循环,之前一直不会写 :)
System.out.println(f.getName());
}
}
}