反射

package com.zyf.day27_1.c_reflect;

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

import org.junit.Test;

//反射技术	
public class App {
	//1、创建对象
//	@Test
//	public void testInfo() throws Exception{
//		Admin a = new Admin();
//		//类全名
//		String className = "com.zyf.day27_1.c_reflect.Admin";
//		//得到类字节码
//		Class<?> clazz = Class.forName(className);
//		//创建对象
//		//Admin admin = (Admin)clazz.newInstance();
//		//创建对象2:通过构造器创建
//		Constructor<?> constructor = clazz.getDeclaredConstructor(String.class);
//		Admin admin = (Admin) constructor.newInstance("Bob");
//	}
	
/*	@Test
	//2、获取属性名或值
	public void testField() throws Exception{
		String  className = "com.zyf.day27_1.c_reflect.Admin";
		Class<?> clazz = Class.forName(className);
		
		Admin admin = (Admin) clazz.newInstance();
		//获取说有属性名称
		Field[] fs = clazz.getDeclaredFields();
		//遍历:输出每一个属性名称
		for(Field f : fs){
			//设置强制访问
			f.setAccessible(true);
			//名称
			String name = f.getName();
			//值
			Object value = f.get(admin);
			
			System.out.println(name + ": " +value);
		}
		
	}*/
	
	@Test
	//3、反射获取方法
	public void testMethod() throws Exception{
		String className =  "com.zyf.day27_1.c_reflect.Admin";
		Class<?> clazz = Class.forName(className);
		Admin admin = (Admin) clazz.newInstance();
		
		Method m = clazz.getDeclaredMethod("getId");
		//调用方法
		Object r_value = m.invoke(admin);
		System.out.println(r_value);
	}


}
package com.zyf.day27_1.c_reflect;

public class Admin {
    //Field
	private int id = 1000;
    private String name = "大厦";
    
    //Constructor
    public Admin(){
    	System.out.println("Admin.Admin()");
    }
    
    public Admin(String name){
    	System.out.println("Admin.Admin()" + name);
    }
    
    //Method
	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;
	}
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值