java reflect

import java.lang.reflect.Field;
import java.lang.reflect.Method;



class User{

private String userName="";

public String getUserName() {
return userName;
}
public int add(int a, int b) {
return a + b;
}
private int minus(int a,int b)
{
return a-b;
}

}
public class ReflectTest {

/**
* @param args
*/
public static void main(String[] args) throws Exception {

Class<?> classType=Class.forName("User");//得到class对象
Method[] meth=classType.getDeclaredMethods();//得到该class所有声明method
for (Method method : meth) {
System.out.println("method:"+method);
}
Field [] fiel=classType.getDeclaredFields();//得到该class所有声明field
for (Field field : fiel) {
System.out.println("fiueld:"+field);
}
User user=(User)classType.newInstance();//通过class获得User对象
Method method=classType.getMethod("add",new Class<?>[]{int.class,int.class});//获取add方法,考虑到方法重载,还要加上参数条件才能唯一限定一个方法
int result=(Integer)method.invoke(user, new Object[]{3,9});//通过invoke调用方法
System.out.println("addresult:"+result);
/**
* 通过反射来访问方法的私有方法
*/
Method methodminus=classType.getDeclaredMethod("minus",new Class<?>[]{int.class,int.class});//通过getDeclaredMethod取得私有的方法
methodminus.setAccessible(true);//将可访问性设置为true
int resultminus=(Integer)methodminus.invoke(user, new Object[]{3,9});//通过invoke调用方法
System.out.println("resultminus:"+resultminus);
/**
* 通过反射来访问方法的私有属性
*/
Field field=classType.getDeclaredField("userName");
field.setAccessible(true);//将可访问性设置为true
field.set(user, "bingyingao");//给私有属性userName赋值
System.out.println(user.getUserName());
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值