day16

day 16

一.节点流

节点流:

字节数组流--节点流   输入流:ByteArrayInputStream   没有新增方法---使用和InputStream一样 

输出流:ByteArrayOutputStream: 有有新增方法---不能够多态使用
 byte[] toByteArray()   字节数组流转为字节数组
 字节数组流--节点流
 输入流:ByteArrayInputStream   
 没有新增方法---使用和InputStream一样
  输出流:ByteArrayOutputStream
  有有新增方法---不能够多态使用
 

二.处理流

        处理流:
        基本数据类型流--数据类型+数据
        输入流:DataInputStream  ---readXXX()
        输出流:DataOutputStream ---writeXXX()
        有新增方法,无法多态调用
        写出的写出的顺序要与读入的顺序一致
        
        EOFException 文件存在,但是内容没有读到,只能够读取到写出的源文件中,否则就算输内容相同的其他文件会抛异常

      基本数据类型流----字节数组流

  

      引用数据类型流|对象流  数据类型+数据
       序列化输出流         ObjectOutputStream --- writeObject()
       反序列化输入流         ObjectInputStream ---  readObject()
       注意:
      先序列化后反序列化        反序列化的顺序要和序列化相同
      不是所有的类都能序列化    NotSerializableException    实现Serializable接口才可以序列化
      不是所有的属性都需要序列化  transient默认值

三.枚举

  枚举类
   1.所有的枚举类都隐式的继承了java.lang.enum抽象类
   2.枚举也是类,枚举中的的所有成员都是类型的对象|实例 ,成员默认是public static final

四:反射

获取到该类的Class对象,我们就可以进行一切操作
反射是发生在运行期的
  
 在类加载的时候,在内存中就会存在一个这个类的Class对象,对象中存在这个类的所有信息(方法,属性,构造器...)
 在创建的对象的时候,得到的是这个Class对象的一个镜像|复制体
  如果拿到了类型Class类的实例,就可以进行一切操作 
 1. 如何获取Class对象|源头:
  1.类名.class
  2.对象.getClass()
  3.Class.forName("包名+类名");  ----这个方法最好

2.获取构造器
    4个方法
    Contrustor getContrustor(Class...);  获取公共的指定的构造器
    Contrustor[] getContrustors();  获取公共的所有的构造器
    Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 获取指定的某个构造器
    Constructor[] getDeclaredConstructors() 获取所有的构造器(包括私有)

3.获取方法
     Method getMethod(方法名,Class<?>... parameterTypes);  获取公共的指定的方法
    Method[] getMethods();  获取公共的所有的方法
    Method<T> getDeclaredMethod(方法名,Class<?>... parameterTypes) 获取指定的某个方法
    Method[] getDeclaredMethods() 获取所有的方法(包括私有)
    方法对象.invoke(类型的对象,参数);
    注意:如果本类中正常使用
    如果外类中使用私有的,开放权限  setAccessible(false) -->true->放开   false->关闭

4.获取属性|字段
     Field getField(字段名字);  获取公共的指定的字段
    Field[] getFields();  获取公共的所有的字段
    Field<T> getDeclaredField(字段名字) 获取指定的某个字段
    Field[] getDeclaredFields() 获取所有的字段(包括私有)
    字段对象.set(对象,字段值);
    字段对象.get(对象);
    注意:如果本类中正常使用
    如果外类中使用私有的,开放权限  setAccessible(false) -->true->放开   false->关闭

5:创建类型对象根据Class对象
    Class对象.newInstance()--调用空构造
    获取构造器
        构造器对象.newInstance(Class<?>... parameterTypes);
6:获取父类的|父接口的的Class对象
    子类的Class对象.getSuperclass()--单个
    子类的Class对象.getInterfaces()--数组
7.修饰符
    Class对象|方法对象|构造器对象|字段对象.getModifiers();  得到修饰符代表数字的和
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值