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