当前位置:懂科普 >

IT科技

> java reflect

java reflect

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java reflect是什么?让我们一起来了解一下吧!

java reflect是反射机制,指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

 

java reflect

实现反射的方法:

一、获得类的信息(获得到的是类的全路径信息)

获取类的信息有三种方法:

1.使用class类的forName()方法获取类的信息

2.使用实例的getClass()获取类的信息

3.通过类名获得类的信息

二、使用类的信息创建类

获得类的信息之后,可以使用reflect(反射)包下面的Field和Method类获得类的属性和方法,并对属性和方法进行操作。

获得类的全路径名以后可以通过使用Class类中的getDeclaredMethod(String name, Class

getDeclaredField(String name)方法如下:

public class ClassUtils {    /**     * 获取属性字段     * @param clazz 类     * @param fieldName 属性名称     * @throws Exception     */    public static void getDeclaredField(Class clazz, String fieldName) throws Exception{        System.out.println(clazz.getDeclaredField(fieldName));    }}public class ClassTest {    public static void main(String[] args) {        try {            Class clazz = Class.forName("reflectdemo.SuperHero");            //测试公有属性            ClassUtils.getDeclaredField(clazz, "ADDRESS");            //测试私有属性            ClassUtils.getDeclaredField(clazz, "name");        } catch (Exception e) {            e.printStackTrace();        }    }}

 getDeclaredFields()方法如下:

public class ClassUtils {    /**     * 遍历clazz对象已有的成员变量     * @param clazz     */    public static void getDeclaredFields(Class clazz){        Field[] fields = clazz.getDeclaredFields();        for (Field field: fields) {            //如果要设置值,需要加入下面这句,反射对象在使用时不使用Java语言访问检查            //field.setAccessible(true);                        //直接打印Field            System.out.println(field);            //手动获取变量类型和变量名称            System.out.println(field.getType().getName() + " " +field.getName());            System.out.println("--------------------");        }    }}public class ClassTest {    public static void main(String[] args) {        try {            Class clazz = Class.forName("reflectdemo.SuperHero");            //遍历成员变量            ClassUtils.getDeclaredFields(clazz);        } catch (Exception e) {            e.printStackTrace();        }    }}

标签: reflect java
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/5p9ypy.html