反射之Method类

package ClassTest;
/*
 * 创建一个类,两个构造器。一个带参。一个无参,三个属性
 * 测试反射,调用反射创建类实例
 */
public class UserPo {
	private int id;
	private String name;
	private String pw;
	/*无参构造器*/
	public UserPo() {
		super();
	}
	/*有参构造器*/
	public UserPo(int id, String name, String pw) {
		super();
		this.id = id;
		this.name = name;
		this.pw = pw;
	}
	/*封装属性*/
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	
}


public class UserPoTest {
	public static void main(String[] args) {
		/* 获取UserPo的类对象的Class对象 */
		Class<?> userPoClass = null;
		try {
			/**
			 * 实例化对象演示
			 */
			userPoClass = Class.forName("ClassTest.UserPo");
			/* 调用Class类的方法newInstance实例化对象,类型转换 */
			UserPo uerPo = (UserPo) userPoClass.newInstance();
			/* 调用class对象获取构造器对象,调用构造器对象newInstance实例化对象 */
			Constructor<?> userPoconstructor = userPoClass.getConstructor(int.class, String.class, String.class);
			/* 调用构造器对象创建实例 */
			UserPo uerPoConstructorClass = (UserPo) userPoconstructor.newInstance(12, "name", "id");
			
			/* 调用构造器返回类的修饰符 */
			String string = Modifier.toString(userPoconstructor.getModifiers());
			
			/**
			 * Method类demo,
			 * 方法:getModifiers(),返回方法的修饰符代表数字,调用Modifier类的toString类,
			 * 方法:getReturnType(),返回方法返回值的Class对象
			 * 方法:getName(),返回方法的名字String类型
			 * 方法:getParameterTypers(),返回方法参数列表的Class数组
			 * 方法:invoke(),调用方法,返回Object类
			 */
			
			/*获取指定方法*/
			Method methodset = userPoClass.getMethod("setPw",String.class);
			
									
			/*获取类UserPo的所有方法*/
			Method[] method = userPoClass.getDeclaredMethods();
			
			for(Method e :method){
				/*获取方法的修饰符*/
				int eModifier = e.getModifiers();
				String modifier = Modifier.toString(eModifier);
				System.out.print(modifier);
				/*获取方法的返回值*/
				Class<?> re = e.getReturnType();
				System.out.print("\t"+re.getSimpleName());
				/*获取方法名*/
				String name = e.getName();
				System.out.print("\t" + name);
				/*获取方法的参数列表*/
				Class<?>[] arg = e.getParameterTypes();
				//System.out.println(arg.length);
				System.out.print("(");
				for(Class<?> k : arg){
					System.out.print(k.getSimpleName()+ "   args");
				}
				System.out.print("){}");
				System.out.println();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值