Javaベース強化の反射


        //   
        Class cls = Class.forName("cn.java_01.fanshe.Persion");
        System.out.println(cls);
        //  .class
        Class persionClass = Persion.class;
        //System.out.println(persionClass);
        //  .getclass
        Persion persion = new Persion();
        Class aClass = persion.getClass();
        //System.out.println(aClass);
        //                             
        //System.out.println(cls==persionClass);
        //System.out.println(cls==aClass);
        //System.out.println(persionClass==aClass);
        //      
        Field[] fields = cls.getFields();//    punlic     
        for (Field f : fields) {
            System.out.println(f);
        }
        Field[] declaredFields = cls.getDeclaredFields();//              
        for (Field d:declaredFields) {
            System.out.println(d);
        }
        //        
        Field name1 = cls.getDeclaredField("name");
        name1.setAccessible(true);
        System.out.println("==============="+name1);
       // Field name2 = cls.getField("name");
       // name2.setAccessible(true);
       // System.out.println("**************"+name2);


        //               
        Constructor[] constructors = cls.getConstructors();
        Constructor constructor = cls.getConstructor(String.class, int.class);
        System.out.println(constructor);
        //    
        Object zs = constructor.newInstance("zs", 23);
        System.out.println(zs.toString());

        Object o = cls.newInstance();//      
        System.out.println(o.toString());
        //    
        constructor.setAccessible(true);

        //      
        //Method method = cls.getMethod();
        System.out.println("------------------  public  --------------------------");
        Method[] methods = cls.getMethods();

        for (Method m :methods) {
            System.out.println(m);
            System.out.println(m.getName());
        }
        System.out.println("------------------  public  --------------------------");
        //       
        Method eat_method = cls.getMethod("eat");
        //    
        Persion p = new Persion();
        eat_method.invoke(p);

        Method eat = cls.getMethod("eat", String.class);
        eat.invoke(p," ");


        //    
        String name = cls.getName();
        System.out.println(name);
        Package aPackage = cls.getPackage();
        System.out.println(aPackage);
 public static void main(String[] args) throws Exception {
        //       
        //        Properties properties = new Properties();
        //        //            
        //        ClassLoader classLoader = AnLi.class.getClassLoader();
        //        InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");
        //        properties.load(resourceAsStream);
        //
        //        //            
        String className = properties.getProperty("className");
        String methodName = properties.getProperty("methodName");

        //     
        Class cla = Class.forName(className);
        Object obj = cla.newInstance();

        //      
        Method method = cla.getMethod(methodName);
        method.invoke(obj);

    }