zoukankan      html  css  js  c++  java
  • java反射机制学习代码

    根据

    http://www.iteye.com/topic/137944

    文档进行学习

    代码如下:

    package reflectTest;
    
    import java.lang.reflect.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
    
    
    class A{
    	
    }
    
    class B extends A{
    	
    }
    
    class C extends B{
    	
    }
    
    
    class TestClass extends Object implements ActionListener {
    	private int a = 3;
    	public Integer b = 4;
    	public TestClass(){}
    	public TestClass(int id,String name){}
    	public void Abc(int id,String name){}
    	public void ActionPerformed(ActionEvent e){}
    }
    
    
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		TestClass tc = new TestClass();
    		Class temp = tc.getClass();
    		//==============================================
    		try{
    			System.out.println("反射类中所有公有的属性");
    			Field[] fb = temp.getFields();
    			for(int i=0;i < fb.length;i++)
    			{
    				Class cl = fb[i].getType();
    				System.out.println("fb: "+cl);
    			}
    			
    			System.out.println("反射类中所有的属性");
    			Field[] fa = temp.getDeclaredFields();
    			for(int i = 0;i < fa.length;i++)
    			{
    				Class cl = fa[i].getType();
    				System.out.println("fa: "+cl);
    			}
    			
    			System.out.println("反射类中私有属性的值");
    			Field f = temp.getDeclaredField("a");
    			f.setAccessible(true);
    			Integer i = (Integer)f.get(tc);
    			System.out.println(i);
    			//===============================
    			String className = temp.getName();
    			Constructor[] constructs = temp.getConstructors();
    			for(int k = 0;k < constructs.length;k++)
    			{
    				Class[] Parametertypes = constructs[k].getParameterTypes();
    				System.out.print(className + "(");
    				for(int j =0 ;j < Parametertypes.length;j++)
    				{
    					System.out.print(Parametertypes[j].getName()+"  ");
    				}
    				System.out.println(")");
    			}
    			//==================================================================
    			Class[] interfaces = temp.getInterfaces();
    			for(int j = 0;j<interfaces.length;j++)
    			{
    				System.out.println(interfaces[j].getName());
    			}
    			Class superClass = temp.getSuperclass();
    			System.out.println(superClass.getName());
    			//=================================================================
    			C c = new C();
    			Class t = c.getClass();
    			Class superClass1 = t.getSuperclass();
    			System.out.println(c);
    			System.out.println(c.getClass());
    			System.out.println(c.getClass().getSuperclass());
    			System.out.println(c.getClass().getSuperclass().getSuperclass());
    		
    		}catch(Exception e)
    		{
    			System.out.println(e);
    		}
    	}
    
    }
    

    运行结果如下:

    反射类中所有公有的属性
    fb: class java.lang.Integer
    反射类中所有的属性
    fa: int
    fa: class java.lang.Integer
    反射类中私有属性的值
    3
    reflectTest.TestClass()
    reflectTest.TestClass(int java.lang.String )
    java.awt.event.ActionListener
    java.lang.Object
    reflectTest.C@70dea4e
    class reflectTest.C
    class reflectTest.B
    class reflectTest.A

  • 相关阅读:
    word设置的密码忘了怎么办?
    Navicat Report Viewer 设置 HTTP 的方法
    如何处理Navicat Report Viewer 报表
    excel密码忘记了怎么办
    Beyond Compare文本比较搜索功能详解
    Popular Cows POJ
    Problem B. Harvest of Apples HDU
    网络流模型整理
    The Shortest Statement CodeForces
    Vasya and Multisets CodeForces
  • 原文地址:https://www.cnblogs.com/itdef/p/5955385.html
Copyright © 2011-2022 走看看