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,”爪哇”);//得到返回值类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值