序列流:将多个字节流合并处理;
基于6.0版本的序列流:
基于7.0版本的序列流:
此类的作用就是“字节流”与“字符流”进行转换的桥梁,将字节流-》字符流。
标识符与关键字:
标识符:标记名称的符号。
针对某种确定的编程语言,只要符合这种语言的命名规则,名称就是合法的标识符。
从这个角度上来说,关键字更加符合标识符的标准。
两者之间的关系:
1、 关键字肯定是合法的标识符;
2、 作为关键字,肯定不能在该编程语言中做为变量的命名标识符;
3、 同一个合法的标识符(包括关键字),在一种语言中是不合法的名称,在另一种语言中可能就是合法的。
问题:在java中,能否用类名命名标识符?可以。
反射:
这个章节中的内容属于“非常规编程”技术;
常用于框架设计或模式设计中。
在一个类中,总的来说,有字段和方法及构造器三部分组成;
1、 字段是来保存类或对象的数据值的;
2、 方法是对类或对象的操作的;
3、 构造器是构造对象的;
反射是用来处理“元数据”的。
比如说某类有一个字段,叫做name,它用来保存对象的姓名值;
反射技术是来操作name这个字段本身的,是对字段、方法、构造器的封装。
Field
Method
Constructor
以上的三个反射类或相关类都在java.lang.reflect包中。
在java源代码中,只有java.lang包中的类会自动导入进来,并不包括子包。就是说如果需要使用子包中类时,必须使用import导入到代码中。
通过类名或类实例可以得到类综合信息的封装体,这个封装也是以对象的方式提供的,称为Class。这个Class对象封装了该类的所有“元数据”信息。
如何得到这个封装体?
1、 通过类名
2、 通过类对象,调用Object中提供的getClass()方法
使用Class<T>或Class<?>的场合?
1、 如果类名已知,使用Class<T>;
2、 如果类名未知,使用Class<?>
获取类全名:
获取简单类名:
一个类的元数据封装体就一个,属于单例类;
不论这个对象是用什么方式得到的。
获取字段的方法:
以上两个方法受到的访问修饰级别的限制;而常用的是下面的方法:
使用以上两个声明字段的访问,标志着通过反射技术,可以直接访问类中的私有成员。
与Field有关的方法:
字段的两种功能:赋值和获取
正常赋值方式:Student s = new Student();s.setName(“zhangsan”);
以上的赋值中,s是实例,setName是方法,”zhangsan”是赋的数据。
现在有了Field对象,可以通过反射赋值和获取值;
获取字段值的方法:
Field,Method,Constrator三个类有一个共同的父类AccessibleObject;
在父类中提供了两个增强访问权限(即可以访问私有成员)的方法:
构造器:
通过构造器元数据对象获取类对象;
|
|
|
|