利用反射機制,使得list中可以存放不同類型的對象

首先建立一個泛型爲Integer的list。隨後利用反射機制使list中存放一個student對象

 

輔助類  Student 

public class Student {
	private  int id;
	private  String name;
	
	//getters and setters and  toString
	
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + "]";
	}

	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 class Test {
	
	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
		//獲取並初始化一個student對象,此處使用反射機制來實例化一個student對象
		  Class obj=Class.forName("com.hy.test.Student"); 
		  Student student = (Student)obj.newInstance();
		  student.setId(2);
		  student.setName("男");
		 
		//初始化一個泛型爲Integer的list並添加兩個元素
		List<Integer>  list=new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		
		//利用反射後去list的類型
		Class<? extends Object>  clazz=list.getClass();
		//獲取list的add方法
		Method method = clazz.getMethod("add",Object.class);
		//調用list的add方法,將student對象存入list中
		method.invoke(list, student);
		System.out.println(list);
	}
}

運行結果:

[1, 2, Student [id=2, name=男]]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章