博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java反射应用三:调用运行时类的指定结构
阅读量:3966 次
发布时间:2019-05-24

本文共 1676 字,大约阅读时间需要 5 分钟。

1.调用指定的属性:

Class clazz = Person.class;//创建运行时类的对象Person p = (Person) clazz.newInstance();//1. getDeclaredField(String fieldName):获取运行时类中指定变量名的属性Field name = clazz.getDeclaredField("name");//2.保证当前属性是可访问的name.setAccessible(true);//3.获取、设置指定对象的此属性值name.set(p, "Tom");System.out.println(name.get(p));

2.调用指定的方法:

Class clazz = Person.class;        //创建运行时类的对象        Person p = (Person) clazz.newInstance();        /*        1.获取指定的某个方法        getDeclaredMethod():参数1 :指明获取的方法的名称  参数2:指明获取的方法的形参列表         */        Method show = clazz.getDeclaredMethod("show", String.class);        //2.保证当前方法是可访问的        show.setAccessible(true);          /*        3. 调用方法的invoke():参数1:方法的调用者  参数2:给方法形参赋值的实参        invoke()的返回值即为对应类中调用的方法的返回值。         */        Object obj = show.invoke(p, "中国");//String nation = p.show("CHN");        System.out.println(obj);        System.out.println("*************如何调用静态方法*****************");        // private static void showDesc()        Method showDesc = clazz.getDeclaredMethod("showDesc", String.class);        showDesc.setAccessible(true);        //如果调用的运行时类中的方法没返回值,则此invoke()返回null//        Object returnDesc = showDesc.invoke(null, "可爱");此方法与下列方法效果一样,//        因为此刻已经表明运行类具体是哪个类        Object returnDesc = showDesc.invoke(Person.class, "可爱");        System.out.println(returnDesc);

3.调用指定的构造器:

Class clazz = Person.class;//private Person(String name)/*1.获取指定的构造器getDeclaredConstructor():参数:指明构造器的参数列表 */Constructor cons = clazz.getDeclaredConstructor(String.class);//2.保证此构造器是可访问的cons.setAccessible(true);//3.调用此构造器创建运行时类的对象Person p = (Person) cons.newInstance("朴灿烈");System.out.println(p);//Person{name='朴灿烈', age=0, id=0, height=0, weight=0.0}

转载地址:http://gvuki.baihongyu.com/

你可能感兴趣的文章
常见网络安全设备默认口令
查看>>
VirtualBox虚拟机网络配置
查看>>
oracle vm virtualbox虚拟机下,CentOS7系统网络配置
查看>>
解决Linux CentOS中cp -f 复制强制覆盖的命令无效的方法
查看>>
wdcpv3升级到v3.2后,多PHP版本共存的安装方法
查看>>
PHP统计当前网站的访问人数,访问信息,被多少次访问。
查看>>
Windows10远程报错CredSSP加密oracle修正
查看>>
Windows server 2016 设置多用户登陆
查看>>
偶然发现的面包屑
查看>>
CentOS 7 下挂载NTFS文件系统磁盘并设置开机自动挂载
查看>>
非插件实现Typecho语法高亮
查看>>
windows 下 netsh 实现 端口映射(端口转发)
查看>>
两个好用的命令行工具 watch 和 rsync
查看>>
信安入门神级书单
查看>>
【IPFS指南】IPFS的竞争对手们(一)
查看>>
docker更换国内镜像
查看>>
CentOS 下 tree命令用法详解
查看>>
docker上传镜像至Registry时https报错解决方法
查看>>
docker下删除none的images
查看>>
Linux提权获取敏感信息方法
查看>>