国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

21.ArrayList內部類迭代器 + java 反射

2019-11-06 06:50:22
字體:
來源:轉載
供稿:網友
package com.example.test6;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Arrays;import java.util.Iterator;/** *  * 使用內部類的方式來實現ArrayList迭代器 *  * 1. ArrayList的構造函數應該是 array = (T[]) new Object[initCapacity] *                       而不是 array = new T[initCapacity[]; *                        * 2. 當刪除ArrayList中數組元素的之后,將數組整體往前移動過程中, *    記得將數組size-1位置處引用值為空,幫助GC盡早釋放資源 *  */class ArrayList<T> implements Iterable<T>{		PRivate T[] array;	private int size;	public ArrayList() {			this(10);	}		public ArrayList(int initCapacity){		array = (T[]) new Object[initCapacity];		size = 0;	}		public void add(T value){		if (size >= array.length){			array = Arrays.copyOf(array, array.length * 2);		}		array[size++] = value;	}		public void del(T value){		for (int i = 0; i < size; i++){			if (array[i].equals(value)){				System.arraycopy(array, i+1, array, i, size-i-1);				size--;				array[size] = null;			}		}	}		public T get(int index){		if (index < 0 || index >= size){			throw new IndexOutOfBoundsException();		}				return array[index];	}		public String toString(){		StringBuilder s = new StringBuilder();		s.append("[");				for (int i = 0; i < size; i++){			s.append(array[i] + " ");		}		s.append("]");				return s.toString();	}	@Override	public Iterator<T> iterator() {		// TODO Auto-generated method stub		return new MyIterator();	}		class MyIterator implements Iterator<T>{				private int index;				public MyIterator(){			index = 0;		}		@Override		public boolean hasNext() {			// TODO Auto-generated method stub			return index < ArrayList.this.size;		}		@Override		public T next() {			// TODO Auto-generated method stub			return ArrayList.this.array[index++];		}		/**		 * 		 * 刪除當前index下標處的元素		 */		@Override		public void remove() {			// TODO Auto-generated method stub			if (index >= size){				return;			}						System.arraycopy(array, index+1, array, index, size-index-1);			size--;			array[size] = null;		}	}	}public class TestDemo {	public static void main(String[] args) {		// TODO Auto-generated method stub		ArrayList<Integer> list = new ArrayList<Integer>();				for (int i = 0; i < 15; i++){			list.add(i);		}				System.out.println(list);				Iterator<Integer> it = list.iterator();		while (it.hasNext()){			it.remove();		}				System.out.println(list);				try {			Class<?> c = Class.forName("com.example.test6.ArrayList");						Constructor<?>[] cons = c.getConstructors();			for (Constructor<?> con : cons){				System.out.println(con);			}						//通過反射調用構造函數生成類對象						//調用默認構造函數生成類對象			ArrayList<Integer> list1 = (ArrayList)c.newInstance();			for (int i = 0; i < 10; i++){				list1.add(i);			}			System.out.println(list1);						//通過調用帶參數的構造函數生成類對象			Constructor<?> con = c.getConstructor(int.class);			ArrayList<Integer> list2 = (ArrayList<Integer>) con.newInstance(10);			for (int i = 0; i < 10; i++){				list2.add(i);			}			System.out.println(list2);						//////////////////////////////////////////////						//通過反射調用類的成員變量			Field[] fields = c.getDeclaredFields();			for (Field field : fields){				System.out.println(field);			}						Field field = c.getDeclaredField("size");			field.setaccessible(true);			field.setInt(list2, 5);			System.out.println(list2);						///////////////////////////////////////////////						//通過反射調用類的成員方法						Method[] methods = c.getDeclaredMethods();			for (Method method : methods){				System.out.println(method);			}						Method method = c.getMethod("get", int.class);			Integer value = (Integer) method.invoke(list2, 3);			System.out.println(value);					} catch (ClassNotFoundException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (InstantiationException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (IllegalAccessException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (NoSuchMethodException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (SecurityException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (IllegalArgumentException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (InvocationTargetException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (NoSuchFieldException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望都县| 咸阳市| 蒙自县| 广安市| 宁城县| 台东县| 沧州市| 青海省| 光山县| 蕲春县| 边坝县| 高要市| 离岛区| 安泽县| 郎溪县| 忻城县| 吉水县| 土默特右旗| 互助| 南涧| 赤壁市| 左云县| 浠水县| 时尚| 竹山县| 张掖市| 鱼台县| 台北县| 七台河市| 灵台县| 龙里县| 时尚| 元朗区| 舟曲县| 古蔺县| 乐山市| 南安市| 天气| 韶山市| 新巴尔虎右旗| 靖边县|