zoukankan      html  css  js  c++  java
  • java反射原理及Class应用

    反射:框架设计灵魂

      框架:半成品软件,可以在框架基础上进行软件开发,简化编码

      反射:将类的各个组成部分封装我其他对象,这就是反射机制

       好处:

         1.可以在程序运行过程中,操作这些对象

         2.可以解耦,提高程序的可扩展性

           获取Class对象的方式:

           1.Class.forName(“全类名”);将字节码文件加载进内存,返回Class对象 (多用于配置文件将类名定义在配置文件中,读取文件加载类)

           2.类名.Class;通过类名的属性.class获取(多用于参数传递) 

           3.对象.getClass();getClass()方法在Object类中定义着( 多用于对象的获取字节码的一个方式)

         结论:

           同一个字节码文件(*.class)在程序巡行的过程中,只会被加载一次,不论通过那一种方式获取Class对象都是同一个。

          Class对象的功能:

         获取功能:

             1.获取成员变量们:

                 Field[]getFields()  :获取所有public修饰的成员变量

          Field getField(String name) : 获取指定名称的 public修饰的成员变量

              FieId[ ] getDeclaredFieIds()获取所有成员变量,不考虑修饰符

              FileId getDeclaredFieId(String name);

           2.获取构造方法们:

                Constructor<?>[ ] getConstructors()

                Constructor<T> getConstructor(类<?>… parameterTypes)

             Constructor<T> getDeclaredConstructor(类<?>… parameterTypes)

                Constructor<?>[ ] getDeclaredConstructors();

           3.获取成员方法们

                 Method[ ] getMethod()

              Method getMethod(String name,类<?>… parameterType)

                 Method[ ] getDeclaredMethod()

               Method getDeclaredMethod(String name,类<?>… parameterType)

            4.获取类名

            String getName();

             Field:成员变量

              操作:

               1.设置值

               void set(Object obj,Object value);

               2.获取值

               get(Object obj)

               3.忽略访问权限修饰符的安全检查

               setAccessible(true):暴力反射

                Constructor:构造方法

               创建对象:        

               newInstance(Object… initargs)

       如果使用空参数构造方法创建对象,操作可以简化Class对象的newInstance方法

  • 相关阅读:
    使用javap分析Java的字符串操作
    使用javap深入理解Java整型常量和整型变量的区别
    分享一个WebGL开发的网站-用JavaScript + WebGL开发3D模型
    Java动态代理之InvocationHandler最简单的入门教程
    Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
    Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
    Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
    Java实现 LeetCode 541 反转字符串 II(暴力大法)
    Java实现 LeetCode 541 反转字符串 II(暴力大法)
    Java实现 LeetCode 541 反转字符串 II(暴力大法)
  • 原文地址:https://www.cnblogs.com/love-menglong/p/11160058.html
Copyright © 2011-2022 走看看