说说Java中的IO流

Java中IO流的种类

  • 按照流的流向分,可以分为输入流和输出流
  • 按照操作单元分,可以划分为字节流和字符流
  • 按照流的角色分,可以分为节点流和处理流

JavaIO流共涉及40多个类,这40多个类都是从4个抽象基类中派生出来的

  • InputStream/Reader:所有输入流的基类,前者是字节输入流,后者是字符输入流
  • OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。

说说Java中的反射

  • 定义:

    • 反射机制是指在运行时,对于任意用一个类都能够知道该类的所有属性和方法;对于任意对象都能调用他的任意一个方法。
    • 在Java中,只要给定类的名字,就可以通过反射机制来获取类的所有信息,这种动态获取信息以及动态调用对象的方法的功能被称为Java语言的反射机制。
    • 反射是框架的灵魂,
  • 框架中使用到反射的例子:

    • 在使用JDBC连接数据库时需要通过反射来加载数据库的驱动程序
    • Spring框架在使用XML配置模式装载Bean的过程也使用到了反射机制
      • Spring框架在使用XML配置模式装载Bean的过程
        • 将程序内所有的XML或者properties配置文件加载进内存
        • Java类解析配置文件中的内容,得到对应实体类的字节码字符串以及相关的属性信息
        • 通过反射机制,根据这个字符串来获取某个类的Class实例
        • 动态配置实例的属性
  • 实现方式:

    • Class.forName(“类路径”)
    • 类名.class
    • 对象名.getClass()
    • 对于基本数据类型的包装类,也可以通过调用包装类的Type属性来获取该包装类的Class对象
  • 优点:

    • 在运行时可以动态获取类的实例,灵活性较高
  • 缺点:

    • 需要将内存中的字节码进行解析,相当于一系列揭示操作,性能较低。