「java反射获取类型」java反射获取属性的值

博主:adminadmin 2022-11-27 04:59:06 39

今天给各位分享java反射获取类型的知识,其中也会对java反射获取属性的值进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

北大青鸟java培训:Java的反射机制?

Java反射机制是一个非常强大的功能,在很多大型项目比如Spring,Mybatis都可以看见反射的身影。

通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,同时也可以解决Java泛型擦除等令人苦恼的问题。

下面java课程就从实际应用的角度出发,来应用一下Java的反射机制。

反射基础p.s:本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的QuickStart。

在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的反射类Class,在Java中我们有三种方法可以获取一个对象的反射类。

通过getClass方法在Java中,每一个Object都有一个getClass方法,通过getClass方法我们可以获取到这个对象对应的反射类:Strings="ziwenxie";Class?c=s.getClass();通过forName方法我们也可以调用Class类的静态方法forName:Class?c=Class.forName("java.lang.String");使用.class或者我们也可以直接使用.class:Class?c=String.class;获取类型信息在文章开头我们就提到反射的一大好处就是可以允许我们在运行期间获取对象的类型信息,下面我们通过一个例子来具体看一下。

首先我们在typeinfo.interfacea包下面新建一个接口A:packagetypeinfo.interfacea;publicinterfaceA{voidf();}接着我们在typeinfo.packageaccess包下面新建一个接口C,接口C继承自接口A,并且我们还另外创建了几个用于测试的方法,注意下面几个方法的权限都是不同的。

java怎么通过反射得到属性的类型

            Class? cls=Class.forName(className);//通过类的名称反射类

            Object obj=cls.newInstance();//对象实例化

            Field field=cls.getField(fieldName);//这个对应的是属性

            fieldValue=field.get(obj);//这个就是属性的值

如何通过Java反射获取一个类属性的类型?要类型Class

先获取Method对象

以下仅供参考

package com.kidd.test.zhidao;

import java.lang.reflect.Method;

/**

 * Hello world!

 *

 */

public class Main {

    public static void main(String[] args) {

        Method method1 = null;

        Method method2 = null;

        try {

            method1 = Class.forName("com.kidd.test.zhidao.Cat").getMethod("getName", (Class?[]) null);

            method2 = Class.forName("com.kidd.test.zhidao.Cat").getMethod("getChilds", (Class?[]) null);

        } catch (NoSuchMethodException ex) {

            ex.printStackTrace();

        } catch (SecurityException ex) {

            ex.printStackTrace();

        } catch (ClassNotFoundException ex) {

            ex.printStackTrace();

        }

        if (null != method1) {

            System.out.println(method1.getGenericReturnType().getTypeName());

        }

        if (null != method2) {

            System.out.println(method2.getGenericReturnType().getTypeName());

        }

    }

}

class Cat {

    private String name;

    private Cat[] childs;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public Cat[] getChilds() {

        return childs;

    }

    public void setChilds(Cat[] childs) {

        this.childs = childs;

    }

}

java反射获取类型的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java反射获取属性的值、java反射获取类型的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。