豆沙包

…… …… 所学 所写 所想 所做 所悟…… ……

通过Java Reflection 获取指定static变量的值

比如:有一个SQLUtil类,是一个Hibernate项目中的用来存储一系列sql的类,皆为常量。在其它的类中可以根据变量的名称来索引相应的值,问题在于名称在另外的类中亦为变量,直接索引是没有办法的,但可以透过Java Reflection非常方便的实现。给出的是示意性代码,相应的Exception处理显然不够 elegant
/*
 * Created on 2005-3-3
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 
*/

package reflection;

/**
 * @author ruby
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 
*/

public class SQLUtil {
    
public static final String SELECT_SQL="from Ruby";

}


/*
 * Created on 2005-3-3
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 
*/

package reflection;

import java.lang.reflect.Field;

/**
 * @author ruby
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 
*/

public class Manager {

    
public static String getValue(String sqlName) throws SecurityException,
            NoSuchFieldException, IllegalArgumentException,
            IllegalAccessException 
{

        Field f 
= SQLUtil.class.getField(sqlName);

        
return f.get(null).toString();
    }


    
public static void main(String[] args) throws SecurityException,
            NoSuchFieldException, IllegalArgumentException,
            IllegalAccessException 
{
        System.
out.println(getValue("SELECT_SQL"));
    }

}

posted on 2005-03-04 09:28 carob 阅读(1023) 评论(0)  编辑  收藏 所属分类: Reflection


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


网站导航: