编程生活

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  113 随笔 :: 0 文章 :: 18 评论 :: 0 Trackbacks
public class DayFactory {
    
static {
        
try {
            Constructor con 
= Day.class.getDeclaredConstructors()[0];
            Method[] methods 
= con.getClass().getDeclaredMethods();
            
for (Method m : methods) {
                
if (m.getName().equals("acquireConstructorAccessor")) {
                    m.setAccessible(
true);
                    m.invoke(con, 
new Object[0]);
                }

            }

            Field[] fields 
= con.getClass().getDeclaredFields();
            Object ca 
= null;
            
for (Field f : fields) {
                
if (f.getName().equals("constructorAccessor")) {
                    f.setAccessible(
true);
                    ca 
= f.get(con);
                }

            }

            Method m 
= ca.getClass().getMethod("newInstance"new Class[] { Object[].class });
            m.setAccessible(
true);
            Day v 
= (Day) m.invoke(ca, new Object[] new Object[] "VACATION", Integer.MAX_VALUE } });
            System.out.println(v.getClass() 
+ ":" + v.name() + ":" + v.ordinal());
            
for(Day day:Day.values()) {
                System.out.println(day);
            }

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

    }

    
    
public static void say() {
    }

    
    @Test
    
public void ddd() {
        DayFactory.say();
    }

posted on 2009-08-19 09:07 wilesun 阅读(1494) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: