栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java反射三种方法(java的反射机制是怎么实现的)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java反射三种方法(java的反射机制是怎么实现的)

Java反射是JAVA的一个bug级的存在
我们可以利用java反射去获取任何字段、任何类。
包括私有的。

获取类模板的两种方式

Class blogClass =Blog.class;

Blog blog =new Blog();
Class blogclass1 =blog.getClass();

这样我们就可以利用类模板进行操作了:

我们可以利用blogclass 或者blogclass1来操作

System.out.println(blogClass.getName());

私有方法用getDeclaredField,非私有字段用getFileld

System.out.println(blogClass.getDeclaredField("id"));

操作私有字段,修改值

Field blog_id=blogClass.getDeclaredField("id");
//因为是私有,需要加上这个
blog_id.setAccessible(true);
blog_id.set(blog,1L);

获取这个字段的注解(注解有三种生命周期:source class Runtime)

blog_id.getAnnotation(注解名.class);

获取该对象的这个一值

blog_id.get(blog);

获取构造器

Constructor[] declaredConstructors=blogClass.getDeclaredConstructors();
for (Constructor declaredConstructor : declaredConstructors) {
    System.out.println("declaredConstructor = " + declaredConstructor);
}

获取无参构造器,并新生成一个对象o

if(declaredConstructor.getParameterCount()==0){
    System.out.println("declaredConstructor = " + declaredConstructor);
    Object o =declaredConstructor.newInstance();
}

注意获取的对象是Object 类型,需要强转

Object o =declaredConstructor.newInstance();
//强转一下
Blog o1=((Blog) o);

获取方法,并执行方法(参数是对象名)

Method tagsToIds = blogClass.getDeclaredMethod("tagsToIds");
tagsToIds.invoke(blog);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号