Java工程师必知词汇:反射

|名词定义|

Java的最大的特征:反射机制,也是Java的精髓。所有技术实现的目标只有一点:可复用性(可重用性)。
对于反射技术首先考虑的是“反”与“正”的操作,所谓的“正”操作指的是使用一个类时,一定要先导入程序所在的包,而后根据类进行对象的实例化,并依靠对象调用类中的方法。而“反”则是根据实例化对象反推出其类型。
正向操作

Java工程师必知词汇:反射

反向操作
获取类信息:public final Class<?> getClass()
Class类对象的三种实例化模式
1.【Object类支持】Object类可以根据实例化对象获取Class对象。
public final Class<?> getClass();
特点:如果想获得Class类对象,就必须产生指定类对象后才可以获得。
2.【JVM直接支持】采用“类.class”的形式实例化
特点:如果想获得Class类对象,就必须导入程序对应的开发包;
3.【Class类支持】在Class类中提供有一个static加载类的方法:
public static Class<?> forName(String className)throws ClassNotFoundException
特点:可以直接采用字符串的形式定义要使用的类型,并且程序中不需要编写任何的import语句。

|反射可访问到的常用信息|

Java工程师必知词汇:反射

|反射机制常用的类|

Java.lang.Class;
Java.lang.reflect.Constructor;
Java.lang.reflect.Field;
Java.lang.reflect.Method;
Java.lang.reflect.Modifier;

|常见用途|

  1. 判定任意一个对象所属的类
  2. 构造任意一个类的对象
  3. 获取任意一个类内成员变量和方法
  4. 调用任意一个对象的方法
  5. 反射main方法
  6. 通过反射运行配置文件内容
  7. 通过反射越过泛型检查
  8. 生成动态代理

|优、缺点|

优点
1.能够在运行时动态获取类的实例,大大提高系统的灵活性和扩展性;
2.与Java动态编译相结合,可以实现无比强大的功能;
3.对于Java这种先编译再运行的语言,能够让我们很方便的创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代码的链接,更加容易实现面向对象。
缺点
1.反射会消耗一定的系统资源,如果不需要动态地创建一个对象,建议不要用反射来做;
2.反射调用方法时可以忽略权限检查,可能会破坏封装性而导致安全问题。

|参考资料|

[1] 阿里云大学Java视频课程
[2] Java开发者
[3] http://c.biancheng.net/view/6907.html
[4] https://www.jianshu.com/p/64ffc65633ce
[5] https://blog.csdn.net/a745233700/article/details/82893076

上一篇:30+热招岗位&15篇面试通关经验,给你足够底气斩获offer!


下一篇:2020阿里巴巴技术线内推合集,一键直投转起来!