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

通过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"));
    }

}

你可能感兴趣的:(通过Java Reflection 获取指定static变量的值)