美文网首页
java反射实例

java反射实例

作者: 时光机器01 | 来源:发表于2019-04-17 15:36 被阅读0次

理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助。 下面是关于class类使用、基本数据类、获取类成员变量、获取类构造方法、获取类的方法的coding实例

    @Test
    public void classReflect(){
        try {
            //一、class类使用
            //1.知道类名(每个类都有一个隐含的静态成员变量class)
            Class reflectClass = LambdaTest.class;
            LambdaTest instance = (LambdaTest)reflectClass.newInstance();
            //2.知道对象实例时
            Class reflectClass2 = instance.getClass();
            LambdaTest instance2 = (LambdaTest)reflectClass2.newInstance();
            //3.知道类的路径
            Class reflectClass3 = Class.forName("LambdaTest");
            LambdaTest instance3 = (LambdaTest)reflectClass3.newInstance();
            instance.runnableTest();
            instance2.innerClaseTest();
            instance3.runnableTest();
            System.out.println(Lambda.class.isInstance(instance3));

            //二、基本数据类型
            Class c1 =int.class;//int的类类型
            Class c2 =String.class;//String类的类类型,可以理解为编译生成的那个String.class字节码文件,
            Class c3 =double.class;
            Class c4 =Double.class;
            Class c5 =void.class;

            //三、获取类成员变量
            Field[] fs = reflectClass.getDeclaredFields();
            for (Field field : fs){
                //1.获取成员变量类型
                Class fieldType = field.getType();
                String typeName = fieldType.getTypeName();
                //2.获取成员变量名
                String fieldName = field.getName();
                System.out.println(typeName+ " " + fieldName);
            }

            //四、获取类构造方法
            Constructor[] cs = reflectClass.getDeclaredConstructors();
            for (Constructor constructor : cs){
                System.out.print(constructor.getName()+"(");
                //获取构造函数参数类型
                Class[] paramTypes = constructor.getParameterTypes();
                for (Class class1 : paramTypes){
                    System.out.print(class1.getName()+ ",");
                }
                System.out.println(")");
            }

            //五、获取方法
            Method[] methods = reflectClass.getDeclaredMethods();
            for (Method method : methods){
                System.out.print("方法" + method.getName()+"(");
                //获取构造函数参数类型
                Class[] paramTypes = method.getParameterTypes();
                for (Class class1 : paramTypes){
                    System.out.print(class1.getName()+ ",");
                }
                System.out.println(")");
            }
            //获取指定方法
            Class<?>[] parameterTypes = new Class[]{ String.class, int.class};
            Method method = reflectClass.getDeclaredMethod("methodTest", parameterTypes);
            System.out.println("指定方法名" + method.getName());
        } catch (IllegalAccessException e){

        } catch (InstantiationException e){

        } catch (ClassNotFoundException e){

        } catch (NoSuchMethodException e){

        }
    }

相关文章

  • Java 反射

    Java反射Java反射API获取Class对象通过反射创建实例对象,调用公共方法通过反射调用私有方法 一.Jav...

  • 反射破坏单例模式(静态内部类)

    java反射,破坏单例模式 静态内部类 反射实例化单例

  • Java反射实例

    反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题。在两个人...

  • java反射实例

    理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底...

  • Java 反射实例

    反射获取 Class类的对象有三种方式:Object类中的getClass()方法类.class通过Class类的...

  • Java高级-反射

    15.1.Java反射机制概述 15.2.理解Class类并获取Class实例(重点) 用反射实现类的实例化,调用...

  • 反射实例——JAVA反射机制

    一、Java反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为...

  • Java反射 - 构造函数

    Java反射——构造函数使用Java反射,您可以检查类的构造函数,并在运行时实例化对象。 这是通过Java类jav...

  • 反射笔记

    反射——Java高级开发必须懂的1 类实际上都是java.lang.class的实例对象。Class类实例的表示:...

  • java反射机制小结

    本文主要从以下几个方面对java反射机制进行总结: 1. 反射的概念2.反射的作用3.反射主要类说明4.反射实例 ...

网友评论

      本文标题:java反射实例

      本文链接:https://www.haomeiwen.com/subject/yjsnwqtx.html