자바 반사 메커니즘 사용

한가 로 이 무사 하 니 자바 의 지식 을 다시 보 세 요.스프링 중 IOC 의 토대 이기 도 하 다.
       반사 메커니즘 의 사용 목적 은 바로 유연 한 동적 로드 에 필요 한 대상 이다.
       다음 코드 는 자바 의 반사 메커니즘 사용 을 간단명료 하 게 소개 합 니 다.
전재 하 다http://blog.csdn.net/ljphhj/article/details/12858767
       
       
package cn.lee.demo;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.TypeVariable;
public class Main {
	/**
	 *      Java      ,                 !
	 * @param args
	 * @throws ClassNotFoundException
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException 
	 * @throws IllegalArgumentException 
	 * @throws NoSuchFieldException 
	 * @throws SecurityException 
	 * @throws NoSuchMethodException 
	 */
	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchFieldException, NoSuchMethodException {
		// TODO Auto-generated method stub
		
		//Demo1.    Java             
		Demo1();
		System.out.println("===============================================");
		
		//Demo2.          Class      
		Demo2();
		System.out.println("===============================================");
		
		//Demo3.    Java    , Class      [             ],    
		Demo3();
		System.out.println("===============================================");
		
		//Demo4:    Java              ,           
		Demo4();
		System.out.println("===============================================");
		
		//Demo5:    Java          , set   get
		Demo5();
		System.out.println("===============================================");
		
		//Demo6:   Java            :      ,  ,    ,    ,   
		Demo6();
		System.out.println("===============================================");
		
		//Demo7:   Java          
		Demo7();
		System.out.println("===============================================");
		
		//Demo8:   Java          
		Demo8();
		System.out.println("===============================================");
		
	}
	
	/**
	 * Demo1:   Java             
	 */
	public static void Demo1()
	{
		Person person = new Person();
		System.out.println("Demo1:   : " + person.getClass().getPackage().getName() + "," 
				+ "    : " + person.getClass().getName());
	}
	
	/**
	 * Demo2:         Class      
	 * @throws ClassNotFoundException 
	 */
	public static void Demo2() throws ClassNotFoundException
	{
		//          Class ,      null,           Person 
		Class> class1 = null;
        Class> class2 = null;
        
        //  1,      ClassNotFoundException [      ]
        class1 = Class.forName("cn.lee.demo.Person");
        System.out.println("Demo2:(  1)   : " + class1.getPackage().getName() + "," 
				+ "    : " + class1.getName());
        
        //  2
        class2 = Person.class;
        System.out.println("Demo2:(  2)   : " + class2.getPackage().getName() + "," 
				+ "    : " + class2.getName());
	}
	
	/**
	 * Demo3:   Java    , Class      [             ]
	 * @throws ClassNotFoundException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public static void Demo3() throws ClassNotFoundException, InstantiationException, IllegalAccessException
	{
		Class> class1 = null;
		class1 = Class.forName("cn.lee.demo.Person");
		//         ,           Person,           ~
		Person person = (Person) class1.newInstance();
		person.setAge(20);
		person.setName("LeeFeng");
		System.out.println("Demo3: " + person.getName() + " : " + person.getAge());
	}
	
	/**
	 * Demo4:   Java              ,           
	 * @throws ClassNotFoundException 
	 * @throws InvocationTargetException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 * @throws IllegalArgumentException 
	 */
	public static void Demo4() throws ClassNotFoundException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException
	{
		Class> class1 = null;
		Person person1 = null;
		Person person2 = null;
		
		class1 = Class.forName("cn.lee.demo.Person");
		//           
		Constructor>[] constructors = class1.getConstructors();
		
		person1 = (Person) constructors[0].newInstance();
		person1.setAge(30);
		person1.setName("leeFeng");
		
		person2 = (Person) constructors[1].newInstance(20,"leeFeng");
		
		System.out.println("Demo4: " + person1.getName() + " : " + person1.getAge()
				+ "  ,   " + person2.getName() + " : " + person2.getAge()
				);
		
	}
	
	/**
	 * Demo5:   Java          , set   get
	 * 
	 * @throws IllegalAccessException 
	 * @throws IllegalArgumentException 
	 * @throws NoSuchFieldException 
	 * @throws SecurityException 
	 * @throws InstantiationException 
	 * @throws ClassNotFoundException 
	 */
	public static void Demo5() throws IllegalArgumentException, IllegalAccessException, SecurityException, NoSuchFieldException, InstantiationException, ClassNotFoundException
	{
		Class> class1 = null;
		class1 = Class.forName("cn.lee.demo.Person");
		Object obj = class1.newInstance();
		
		Field personNameField = class1.getDeclaredField("name");
		personNameField.setAccessible(true);
		personNameField.set(obj, "    ");
		
		
		System.out.println("Demo5:               :" + personNameField.get(obj));
		
	}
	
	/**
	 * Demo6:   Java            :      ,  ,    ,    ,   
	 * @throws ClassNotFoundException 
	 */
	public static void Demo6() throws ClassNotFoundException
	{
		Class> class1 = null;
		class1 = Class.forName("cn.lee.demo.SuperMan");
		
		//      
		Class>  superClass = class1.getSuperclass();
		System.out.println("Demo6:  SuperMan     : " + superClass.getName());
		
		System.out.println("===============================================");
		
		
		Field[] fields = class1.getDeclaredFields();
		for (int i = 0; i  interfaces[] = class1.getInterfaces();
		for (int i = 0; i  class1 = null;
		class1 = Class.forName("cn.lee.demo.SuperMan");
		
		System.out.println("Demo7: 
fly():"); Method method = class1.getMethod("fly"); method.invoke(class1.newInstance()); System.out.println(" walk(int m):"); method = class1.getMethod("walk",int.class); method.invoke(class1.newInstance(),100); } /**  * Demo8:  Java  *   *  java 。[ ] 1)Bootstrap ClassLoader  c++ , 。 2)Extension ClassLoader  , jre\lib\ext 3)AppClassLoader  classpath , 。 java 。  *   * @throws ClassNotFoundException   */ public static void Demo8() throws ClassNotFoundException { Class> class1 = null; class1 = Class.forName("cn.lee.demo.SuperMan"); String nameString = class1.getClassLoader().getClass().getName(); System.out.println("Demo8:  : " + nameString); } } /**  *   * @author xiaoyaomeng  *  */ class  Person{ private int age; private String name; public Person(){ } public Person(int age, String name){ this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } } class SuperMan extends Person implements ActionInterface { private boolean BlueBriefs; public void fly() { System.out.println(" ~~"); } public boolean isBlueBriefs() { return BlueBriefs; } public void setBlueBriefs(boolean blueBriefs) { BlueBriefs = blueBriefs; } @Override public void walk(int m) { // TODO Auto-generated method stub System.out.println(" ~~ " + m + " !"); } } interface ActionInterface{ public void walk(int m); }

좋은 웹페이지 즐겨찾기