【发布时间】:2012-05-09 16:15:52
【问题描述】:
我正在尝试从常量文件中读取键值对。当我直接使用类名和字段名时它可以工作,但是当我动态构造Class+字段组合时它不起作用。这个问题如何协商?
以下是我的常量文件
Public interface Constants
{
String DEV_SELECT_STATEMENT = “DEV_INT_SQL_SELECT_STATEMENT”
String INT_SELECT_STATEMENT = “DEV_INT_SQL_SELECT_STATEMENT”
}
Query.properties 文件
DEV_INT_SQL_SELECT_STATEMENT = “SELECT * FROM SOME TABLE”;
JAVA 类文件//这可行
public someClass
{
public someMethod() //This works
{
String sqlStatement = QueryLoader.getStatement(Constants.DEV_SELECT_STATEMENT);
System.out.println("The key is :" + Constants. DEV_SELECT_STATEMENT);
System.out.println(“SqlStatement is : “ + sqlStatement);
}
}
关键是:DEV_INT_SQL_SELECT_STATEMENT
SqlStatement 是:SELECT * FROM SOME TABLE
public someClass //This does not work
{
public someMethod(String env) //This does not work
{
String queryKey = “Constants” +env + “_SELECT_STATEMENT “;
System.out.println(“The Key is : “ + queryKey);
String sqlStatement = QueryLoader.getStatement(queryKey);
System.out.println(“SqlStatement is : “ + sqlStatement);
}
Key is :Constants.DEV_SELECT_STATEMENT //这里不给出值而是字符串
SqlStatement 为:空
【问题讨论】:
-
您正在尝试在运行时构建和评估 Java 代码;可行,但不是最简单的方法。
-
@Dave,那么我们该怎么做才能实现它。建议/链接会有所帮助
-
是的,你可以像 Dave 所说的那样解决这个问题,但这是一种可怕的方法。请改用
Map<String, String>,或者可能是属性文件(无论如何它是一个地图)。
标签: java string dynamic constants