cloner.java

来自「一个可以存储和打印成绩单的系统」· Java 代码 · 共 48 行

JAVA
48
字号
package org.minjey.cjsjk.util;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;public class Cloner {	public static Object clone(Object obj) {		Object nobj = null;		try {			Reflector reflector = new Reflector();			Class cla = obj.getClass();			nobj = cla.getConstructor(null).newInstance(null);			Field[] fields = cla.getDeclaredFields();			String fname = null;			for(Field field : fields) {				fname = field.getName();				Object value = reflector.getValue(obj, fname);				if(value != null) {					reflector.setValue(nobj, fname, new Object[]{value});				}			}			cla = cla.getSuperclass();			fields = cla.getDeclaredFields();			for(Field field : fields) {				fname = field.getName();				Object value = reflector.getValue(obj, fname);				if(value != null) {					reflector.setValue(nobj, fname, new Object[]{value});				}			}		} catch (IllegalArgumentException e) {			e.printStackTrace();		} catch (SecurityException e) {			e.printStackTrace();		} catch (InstantiationException e) {			e.printStackTrace();		} catch (IllegalAccessException e) {			e.printStackTrace();		} catch (InvocationTargetException e) {			e.printStackTrace();		} catch (NoSuchMethodException e) {			e.printStackTrace();		}		return nobj;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?