控制层:接收请求,分析请求
业务层:完成各种业务
持久层:完成对存储介质(外部设备)中的数据的交互
- 回调机制
(1)
current.list(New JavaFilter)
① 从current所指的第一个文件对象,看是不是目录,如果是,就放在字符串中,如果不是,就模式匹配,模式匹配false就不放在字符串中,如果是true则相反
② JavaFilter实现 接口
③ 迭代目录下的所有元素
④ 策略模式name.endsWith(“.java”);
(2) 递归的缺点:变量很多 变量浪费很大
2. -deprecation :过时API的位置会出警告(得到过期的位置)
3. 对象反射:在程序运行时拿到类,创建对象;不仅能拿到该类的父类、属性、所有构造方法、甚至可以拿到私有属性、接口。
(1) Class:在java.lang包下,Class.forName()创建反射对象
(2) 在当前目录下加载所对应的类
(3) 执行静态块(表明类被加载)
(4) 虚拟机为加载的.class在堆区自动创建一个Class类型的反射对象(一定与某个字节码文件关联)
(5) C.newInstence()通过反射对象创建一个反射对象类型的对象(Object类型),()表示调用什么参数签名的构造方法
(6) 造型为父类接口类型
(7) 通过父类类型对象调用子类覆盖的方法
4. 为什么用反射对象
(1) 通过用户传入的字符串创建对象
(2) 创建的对象不明确
(3) 调用的方法不明确
5. 反射对象的危害
(1) 破坏封装性
(2) 使用相对复杂
(3) 程序执行效率低
6. 反射对象获取的几种方式(反射对象由虚拟机创建)
(1) Class c1 = Class.forName(“Employee”);直接创建反射对象。容易产生 异常,要放进try catch 块里
(2) 拿到(获取)反射对象Employee.class
① Class c2 = Employee.class拿到反射对象,不会调用静态块(延迟调用初始化块)。如果类不存在(.class未加载),就会创建反射对象,但是不会执行初始化块
② Object o = c2.newInstence();
执行初始化块
(3)
Employee e=new Employee();Class c3=e.getClass()
① 通过new创建反射对象
② 通过对象e拿到(获取)反射对象
7. forName():写类的全称(如果类不在当前目录下,import对其无效)
8. SimpleDateFormat和prase
1、SimpleDateFormat(日期格式化显示)
(1)用处:
· 将日期以一种自己想要的格式显示出来
· 将字符串转换成日期
(2)格式化标记(注意大小写)
· 年 - yyy
· 月 - MM
· 日 - dd
· 时 - HH
· 分 - mm
· 秒 - ss 毫秒 - SS
(3) 日期格式化显示例子:format(date)
(4)将字符串转换为对应日期:parse(date)
定义的格式可能和实际字符串提供的格式不符合,故要抛出异常
(1) 作业:自己实现策略模式(文件过滤),容器存储文件。写测试类和实现类
(2) 作业:通过递归将目录下所有的(包括子目录下)的文件输出(递归只能查八层的子目录)