day22

序列流:将多个字节流合并处理;

基于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;

在父类中提供了两个增强访问权限(即可以访问私有成员)的方法:

 

构造器:

 

通过构造器元数据对象获取类对象;

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值