美文网首页
2018-06-19 java 反射的简单使用

2018-06-19 java 反射的简单使用

作者: 江江江123 | 来源:发表于2018-06-19 14:48 被阅读0次
public class myRect {
    public static class Test implements Comparable<Test> {
        private String name;

        public Test(String name) {
            this.name = name;
        }

        public void sout(){
            System.out.println("我是谁?"+name);
        }

        public int compareTo(Test o) {
            return 0;
        }
    }

    public static void main(String[] args) {
        try {
            //打印类名,内部类用$
            System.out.println(Test.class);
            //需要类名
            final Class<?> aClass = Class.forName("day05.myRect$Test");
            //调用有参构造,无参直接aClass.newInstance()
            final Constructor<?> constructor = aClass.getConstructor(String.class);
            final Test test = (Test) constructor.newInstance("测试类");
            //动态获取方法
            final Method method = aClass.getMethod("sout");
            method.invoke(test);
            //修改公共变量
            //final Field name = aClass.getField("name");
            //修改私有变量,在创建类时没有创建set方法
            final Field name = aClass.getDeclaredField("name");
            name.setAccessible(true);
            name.set(test,"ccc");
            test.sout();
            //获取class的类加载器
            System.out.println(aClass.getClassLoader());
            //打印所有接口
            final Class<?>[] interfaces = aClass.getInterfaces();
            for (Class class1: interfaces
                 ) {
                System.out.println(class1);
            }
            //打印父类
            System.out.println(aClass.getGenericSuperclass());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }
}

相关文章

  • 2018-06-19 java 反射的简单使用

  • Java反射

    简单总结下什么是Java反射,怎么使用。 Java反射机制 反射就是指JVM运行期,获取指定类所有的属性和方法的一...

  • Java反射的简单使用

    百度百科 先来一些不太实用的解释:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法...

  • Java反射机制

    最近看了一下想学习一下Retrofit,发现其中使用到了Java的反射机制,虽然之前也简单使用过Java的反射,但...

  • 一文读懂系列-Java反射

    如何使用反射 在开发过程中我们经常会使用到反射,反射使用起来也很简单,在java runtime下通过方法名和参数...

  • 简单工厂

    1.面向接口编程 2.简单工厂模式实例 使用java反射改进:

  • Android 编译时注解 —— 语法详解

    java Type 详解 java 反射机制详解 注解使用入门(一) Android 自定义编译时注解1 - 简单...

  • Java反射与joor反射库的使用

    java原生反射的使用 反射构造对象 反射方法 反射字段 joor反射库的使用 github:https://gi...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java中反射的简单使用

    1、获取Class对象 获取Class对象有三种方式,如下: 2、获取属性 3、获取构造方法 4、实利化对象 5、...

网友评论

      本文标题:2018-06-19 java 反射的简单使用

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