美文网首页
Java中反射的简单使用

Java中反射的简单使用

作者: 王魔王 | 来源:发表于2018-11-30 19:43 被阅读0次

1、获取Class对象

获取Class对象有三种方式,如下:

        //获取Class对象
        Class<Person> personClass = Person.class;
          Person personFirst = new Person();
        Class aClass = personFirst.getClass();
        //要使用类的全路径类名
        Class person = Class.forName("com.bawie.jingba.Person");

2、获取属性

        //获取属性
        //获取所有的属性(只能获取public的,包括父类的)
        Field[] fields = personClass.getFields();
        //获取某个属性(只能获取public的,不包括父类的)
        Field nikeName = personClass.getField("nikeName");
        
        //获取所有属性(获取所有声明出的,包括私有的,不包括父类的)
        Field[] declaredFields = personClass.getDeclaredFields();

        //可以获取私有的某个属性
        //参数解释:idNum为属性的名字
        Field idNum = personClass.getDeclaredField("idNum");
        // 更改public属性值
        nikeName.set(personFirst, "王祖贤");
        //更改私有属性值
        idNum.setAccessible(true);
        idNum.set(personFirst, "18");

3、获取构造方法

  //获取public无参构造方法(不包括父类)
        Constructor[] constructors = personClass.getConstructors();
        //获取全部无参构造方法(包括私有的,不包括父类)
        Constructor[] declaredConstructors = personClass.getDeclaredConstructors();
        
        //只能获取public有参构造方法
        Constructor constructor = personClass.getConstructor(String.class, String.class);
        //可以获取private有参数构造方法
        Constructor declaredConstructor = personClass.getDeclaredConstructor(String.class);

4、实利化对象

       //通过反射示例化对象
        Person person1 = personClass.newInstance();
        Person o = (Person) constructor.newInstance("林青霞", "东方不败");

5、获取方法

        //获取父类的public方法,以及自身的所有方法
        Method[] methods = personClass.getMethods();

        //获取本类中声明的方法(public和private),不包括父类的方法
        Method[] declaredMethods = personClass.getDeclaredMethods();

        //获取单个public方法
        Method eatMethod = personClass.getMethod("eat");
        Method hitMethod = personClass.getMethod("hit", int.class);

        //获取单个私有方法
        //参数解释:sleep为方法的名字
        Method sleepMethod = personClass.getDeclaredMethod("sleep");

       //调用方法
        eatMethod.invoke(personFirst);
        hitMethod.invoke(personFirst, 10);
        //调用私有方法
        sleepMethod.setAccessible(true);
        sleepMethod.invoke(personFirst);

有关调用方法的解释:
通过反射调用方法的时候,传递的第一个参数是要调用的对象,例如personFirst,而后面的参数,就根据方法本身的参数传递即可。
例如:sleep方法、eat方法、hit方法是这样定义的

 private void sleep() {
        LogUtil.d( "睡觉");
    }
 public void eat() {
        LogUtil.d( "吃饭");
    }
 public void hit(int count) {
        LogUtil.d( "打豆豆" + count + "次");
    }

相关文章

  • Java中反射的简单使用

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

  • 一文读懂系列-Java反射

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

  • Java反射

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

  • Java反射的简单使用

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

  • Java反射机制

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

  • 使用反射机制实现javaBean的自动封装

    1 反射 什么是java反射呢?简单的说,对于java中任意一个类,利用反射都可以获取该类中的所有属性和方法,而对...

  • 深入解析java反射

    本博文主要记录Java 反射(reflect)的使用,在了解反射之前,你应该先了解 Java 中的 Class 类...

  • 这才是理解Java反射的正确姿势

    反射简介 反射是Java的高级特性之一,但是在实际的开发中,使用Java反射的案例却非常的少,但是反射确实在底层框...

  • 简单工厂

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

  • java中反射的使用

    1.反射的概述? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对...

网友评论

      本文标题:Java中反射的简单使用

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