天天看點

關于java反射機制複習的那些事

實體類

package com.beijng.dasenlin.bean;
/**
 * 寫一個實體類,
 * @author Administrator
 *
 */
public class User {

    private int id;
    private String name;
    private int age;
    /**
     * 無產的構造方法
     */
    public User(){

    }
    /**
     * 通過他們來獲取
     * @param id
     * @param name
     * @param age
     */
    public User(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }   
 }
           

反射機制測試類

package com.beijng.dasenlin.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

import javax.swing.SpringLayout.Constraints;

import com.beijng.dasenlin.bean.User;

/**
 * 
 * @author Administrator
 *
 */
public class Demo {

    public static void main(String[] args) {
        String path="com.beijng.dasenlin.bean.User";
        try {
            Class<User> clazz = (Class<User>)Class.forName(path);
            User u = clazz.newInstance();
            System.out.println("獲得的執行個體化對象"+u);

            //Class clazz = path.getClass();

            Constructor [] constructor=clazz.getDeclaredConstructors();

            for(Constructor ct:constructor){
                System.out.println("所有的構造器"+ct);
            }

            Constructor c1 = clazz.getConstructor();
            System.out.println("獲得的無參構造器"+c1);

            Constructor<User>c2 = clazz.getDeclaredConstructor(int.class,String.class,int.class);
            User u2=c2.newInstance(,"xiaowan",);
            System.out.println(u2.getName());
            System.out.println("獲得構造器"+c2);

            Field f=clazz.getDeclaredField("name");
            f.setAccessible(true);//設定屬性不需要通路了
            f.set(u, "xiaoming");
            System.out.println(f.get(u));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}