栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【动力节点 Java进阶学习笔记】第八章 反射机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【动力节点 Java进阶学习笔记】第八章 反射机制

【动力节点 Java进阶学习笔记】第八章 反射机制

1、什么是反射机制、反射机制的作用和相关的类2、获取Class的三种方式、通过获取的Class实例化对象、获取文件的绝对路径3、类加载器的概念、分类以及双亲委派机制4、通过反射机制反射属性、如何读取和修改属性值5、通过反射机制反射方法、如何调用对象的某个方法6、通过反射机制反射构造方法、如何调用构造方法实例化对象7、通过反射机制获取父类以及父类型接口

1、什么是反射机制、反射机制的作用和相关的类

反射机制:可以操作字节码文件作用:可以让程序更加灵活。相关类:
       java.lang.Class:代表整个字节码,代表一个类型,代表整个类。
       java.lang.reflect.Method:代表字节码中的方法字节码。代表类中的方法。
       java.lang.reflect.Constructor:代表字节码中的构造方法字节码。代表类中的构造方法
       java.lang.reflect.Field:代表字节码中的属性字节码。代表类中的成员变量(静态变量+实例变量)。 2、获取Class的三种方式、通过获取的Class实例化对象、获取文件的绝对路径

获取Class的三种方式:
       Class.forName()
       <对象>.getClass()
       xxx.class(如int.class;String.class)通过获取的Class实例化对象:newInstance()
       newInstance()底层调用的是该类型的无参数构造方法。获取绝对路径:
       Thread.currentThread.getContextClassLoader.getResource().getPath()获取文件流:
       Thread.currentThread.getContextClassLoader.getResourceAsStream()资源绑定:
       ResourceBundle bundle =ResourceBundle.getBundle()
       这个文件必须在类路径下(src路径下),文件扩展名也必须是properties,并且在写路径的时候,路径后面的扩展名不能写。
       获取value:bundle.getString() 3、类加载器的概念、分类以及双亲委派机制

启动类加载器 : rt.jar

扩展类加载器 : ext/*.jar

应用类加载器 : classpath

java中为了保证类加载的安全,使用了双亲委派机制:
       优先从启动类加载器中加载,这个称为“父”
       “父”无法加载到,再从扩展类加载器中加载,这个称为“母”。双亲委派。
        如果都加载不到,才会考虑从应用类加载器中加载,直到加载到为止。

4、通过反射机制反射属性、如何读取和修改属性值

获取所有Field: .getDeclaredFields()获取属性的修饰符:Modifer.toString(.getModifiers())获取属性的数据类型:.getType().getSimpleName()获取属性的数据名称:.getName()给obj对象的某个属性赋值:.set(,)
       赋值三要素:对象、属性、值读取obj对象的属性值: .get()私有属性无法直接读取,需要打破封装:.setAccessible(true) 5、通过反射机制反射方法、如何调用对象的某个方法

可变长度参数:类型… 变量名; 如m1(int… args)获取所有Method: .getDeclaredMethods()获取方法的修饰符:Modifer.toString(.getModifiers())获取方法的返回值:.getReturnType().getSimpleName()获取方法名:.getName()获取方法的形参列表:Class[] .getParametersTypes()
                                    .getSimpleName()通过反射机制调用对象的某个方法:
       获取指定方法:.getDeclaredMethod(<方法名>, Class… parameterTypes)
                            如(login, String.class, String.class)
       调用方法:Object obj = .invoke(obj, Class… parameterTypes) 6、通过反射机制反射构造方法、如何调用构造方法实例化对象

获取constuctor:Constructor[] .getDeclaredConstructors();获取修饰列表:Modifer.toString(.getModifiers())获取方法名:.getName() 或 .getSimpleName()获取形参列表:Class[] .getParameterTypes()调用构造方法:
       .getDeclaredConstructor(Class… parameterTypes)
        .newInstance(Class… parameterTypes) 7、通过反射机制获取父类以及父类型接口

获取父类:.getSuperclass()获取实现的接口:Class[] .getInterfaces()

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号