Java 反射实例
实体类:User
package com.reflect.model; public class User{ private User(int id, String username, String password) { super(); this.id = id; this.username = username; this.password = password; System.out.println("three"); } public User(int id) { super(); this.id = id; System.out.println("one"); } public User() { super(); System.out.println("zero"); } private int id; private String username; private String password; }
测试类:Test
package com.reflect.test; import java.lang.reflect.Array; import java.util.Properties; public class Test { public static void main(String[] args) { try { /*Class<?> superUserClass = userClass.getSuperclass(); Class<?>[] infs = userClass.getInterfaces(); //System.out.println(infs.length); //Constructor[] Constructors = userClass.getConstructors(); Constructor<?>[] constructors = userClass.getDeclaredConstructors(); //System.out.println(constructors.length); for(Constructor<?> constructor : constructors) { int len = constructor.getParameterTypes().length; if(!constructor.isAccessible()) { constructor.setAccessible(true); } System.out.println(Modifier.toString(constructor.getModifiers())); Class<?>[] typeClass = constructor.getParameterTypes(); switch(len) { case 0 : constructor.newInstance(); break; case 1 : System.out.println(Modifier.toString(typeClass[0].getModifiers())); constructor.newInstance(10); break; case 3 : System.out.println(Modifier.toString(typeClass[0].getModifiers())); constructor.newInstance(10,"abc", "abc123"); break; } }*/ /* //通过反射操作方法 Field[] fields = userClass.getDeclaredFields(); String setter = "set" + fields[1].getName().substring(0, 1).toUpperCase() + fields[1].getName().substring(1); String getter = "get" + fields[1].getName().substring(0, 1).toUpperCase() + fields[1].getName().substring(1); System.out.println(setter); Object user = userClass.newInstance(); Method method = userClass.getMethod(setter, String.class); method.invoke(user, "10"); Method methodG = userClass.getMethod(getter); Object obj = methodG.invoke(user); System.out.println(obj);*/ /*//通过反射操作属性 Class<?> userClass = Class.forName("com.reflect.model.User"); Object user = userClass.newInstance(); Field[] fields = userClass.getDeclaredFields(); Field field = fields[0]; field.setAccessible(true); field.set(user, 1); System.out.println(field.get(user)); */ /*//复制并扩展数组 int[] temp = {1,2,3,4,5,6,7,8,9};//原数组 int[] dest = (int[])Test.extendArray(temp, 200);//调用extendArray()方法扩展数组 for(int i = 0; i < dest.length; i++) { System.out.println(dest[i] + "," + dest.length); } //System.getenv()输出环境变量 Map<String, String> envs = System.getenv(); Iterator<String> ites = envs.keySet().iterator(); while(ites.hasNext()) { String val = envs.get(ites.next()); } List<Integer> ints = new ArrayList<Integer>(); */ /*File f = new File("F:/a.txt"); PrintStream ps = new PrintStream(f); System.setOut(ps); Scanner scan = new Scanner(System.in); for(int i = 0; i < 10; i++) { System.out.println(i); }*/ Properties pro = new Properties(); pro.setProperty("JAVA_HOME", "D:/java"); System.setProperties(pro); } catch (Exception e) { e.printStackTrace(); } } private static Object extendArray(Object obj, int length) { Class<?> arrayType = obj.getClass().getComponentType(); Object arrayInstance = Array.newInstance(arrayType, length); int objLength = Array.getLength(obj); System.arraycopy(obj, 0, arrayInstance, 0, objLength); return arrayInstance; } }

浙公网安备 33010602011771号