Java基础

74 阅读1分钟

1.反射

  • 动态语言的特性,通过反射可以在运行期间获取任意一个类的所有属性和方法,还可以调用这些属性和方法

  • 主要API:

    • java.lang.Class:代表一个类
    • java.lang.reflect.Method:代表类的方法
    • java.lang.reflect.Field:代表类的成员变量
    • java.lang.reflect.Constructor:代表类的构造器
  • 作用:

    • 运行时判断一个对象所属的类

    • 运行时判断一个类的成员变量和方法

    • 运行时构造类的对象

    • 运行时获取泛型信息

    • 运行时调用对象的变量和方法

    • 动态代理

1.1 怎么选择new对象和反射得到对象

为了动态性,使用反射,动态创建对象

1.2 反射和封装性是否矛盾?

不矛盾

1.3 获取Class对象的4种方法

  • 已知具体的类,通过类的class属性获取类对象
  • 已知类的实例,调用实例getClass方法获取
  • 已知类的全类名,通过Class.forName()方法获取
  • 通过类加载器的loadClass方法获取,传入类的全类名

1.4 创建类的对象

  • newInstance()方法,本质上还是调用了类的空参构造方法

    Class clazz = Person.class;
    Person obj = clazz.newInstance();// obj就是Person的对象
    

    \