黑马程序员——javaSE_反射

------- android培训java培训、期待与您交流! ----------


反射

1.反射就是把java类中的各种成分映射成相应的java类
2.java程序中的各个java类属于同一类事物,描述这类事物的类名就是Class
3.获取各个字节码对应的实力对象有三种方法
方法一:类名.class
方法二:对象.getclass();
方法三:Class.forName("类名");  这种方法最常用,也最具有灵活性
Constructor类:代表某个类的一个构造方法
演示:得到一个类的构造方法
import java.lang.reflect.Constructor;
public class ClassDemo {
	public static void main(String[] args) throws Exception {
		Class cla = String.class;
		Constructor c = cla.getConstructor(String.class);
		String str = (String)c.newInstance("哈哈");
	}
}
演示:获取到一个类中的字段
public class ClassDemo {
	public static void main(String[] args) throws Exception {
		Class cla = Demo.class;
		Demo d = (Demo) cla.newInstance();
		Field f = cla.getField("str");
		Field f1 = cla.getDeclaredField("id");//获取隐藏的
		f1.setAccessible(true);//设置成可见的
		System.out.println(f1.get(d));
	}
}
class Demo{
	public String str = "嘿嘿";
	private int id = 55;
}
演示:获取到一个类中的方法
public class ClassDemo {
	public static void main(String[] args) throws Exception {
		Class cla = Demo.class;
		Demo d = (Demo) cla.newInstance();
		Method m = cla.getMethod("show",null);	//获取方法
		m.invoke(d,null);	//运行方法
	}
}
class Demo{
	public String str = "嘿嘿";
	private int id = 55;
	public void show(){
		System.out.println("show...run");
	}
}
例子: ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象
import java.lang.reflect.Method;
import java.util.*;
public class Test {
	public static void main(String[] args) throws Exception{
		ArrayList<Integer> list = new ArrayList<Integer>();
		Class<?> cla = list.getClass();	//获取ArrayList的字节码对象
		Method m = cla.getMethod("add",Object.class);	//获取add添加方法
		m.invoke(list,"haha");	//运行add方法,添加字符串到ArrayList中
		m.invoke(list,"heihei");
		for(int x =0;x<list.size();x++){	//输出
			System.out.println(list.get(x));
		}
	}
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值