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;
    }

}

 

 

posted @ 2013-11-14 15:31  High阔天空  阅读(259)  评论(0)    收藏  举报