我是靠谱客的博主 害怕台灯,最近开发中收集的这篇文章主要介绍JAVA反射机制(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

获取类
(已知a对象)
1.Class c1=a.getClass();
2.Class c2=a.class();
3.Class c3=Class.forName(“java.lang.String”);

获取类的包名:
Package package=c1.getPackage();
String packageName=package=.getName();

获取修饰符:
int mod=c1.getModifiers(); 返回访问修饰符所对应的int数值
String modifier=Modifier.toString(mod); 使用Modifier自己的toString方法传入int返回相应的访问修饰符

获取父类
Class c1=c1.getSuperclass();

获取接口
Class[] interfaces=c1.getInterfaces();

获取属性
Field[] f=c1.getDeclaredFields(); 获取所有字段
Field[] f=c1.getFields(); 获取public字段

Class type = f.getType();//数据类型
如果数据类型是数组需进行一下操作
type=type.getComponentType();
String name = f.getName();//字段名称
Field idField=c1.getDeclaredField("id");//获取id属性
idField.setAccessible(true);//取消对文本字段的访问
idField.set(aa,100);//赋值
idField.get(aa);//获取值

获取构造方法
Constructor[] constructors=c1.getConstructor[];
Constructor[] constructors=c1.getDeclaredConstructor[];
constructors.getName(); //获取构造方法名;
Class[] parameters=constructors.getParameterTypes(); //获取参数类型

获取类的成员方法
Method[] methods=c1.getDeclaredMethods();
Class returnType=methods.getReturnType();//数组需要处理,方法同上
(获取其它属性同上)

创建对象
使用无参构造
A aa = (A)c1.newInstance();

使用带参数的构造
Class class = Class.forName(“java.util.Date);
Constructor constructor = class1.getConstructor(long.class);
Date date = (Date)constructor.newInstance(13464654L);

调用方法——public Object invoke(Object obj,Object…args) //obj某对象;args方法参数;invoke返回值类型是实际方法的返回值类型
A aa = (A)c1.newInstance();
Method method=c1.getDeclaredMethods(“setName”,String.class);
//如果方法为私有方法时添加 method.setAccessible(true);
Object obj=method.invoke(aa,”爪哇”);//得到返回值类型

最后

以上就是害怕台灯为你收集整理的JAVA反射机制(一)的全部内容,希望文章能够帮你解决JAVA反射机制(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部