听起来您正在寻找反射(或者如果您想使用不同的数据类型而不是在类中查找变量然后 a Map<String, String>
)。看起来 Map 方法已经很好地涵盖了,所以只是因为这对我来说很有趣,所以这里是反射方法(并不是说这不是解决这个问题的最佳方法,而是因为你要求检查变量是否存在然后得到这是价值)
import java.lang.reflect.Field;
public class SOQuestion {
private final String PROG_DEPT = "PROGRAMMING/ENGINEERING";
private final String DES_DEPT = "DESIGN/WRITING";
private final String ART_DEPT = "VISUAL ARTS";
private final String SOUND_DEPT = "AUDIO";
public static void main(String ... args) throws IllegalArgumentException, IllegalAccessException, InstantiationException {
System.out.println(reflectValue("ART_DEPT", SOQuestion.class));
System.out.println(reflectValue("COMP_DEPT", SOQuestion.class));
}
public static String reflectValue(String varible, Class thing) throws IllegalArgumentException, IllegalAccessException, InstantiationException {
Field[] fs = thing.getDeclaredFields();
for(int i = 0; i < fs.length; i++) {
if(fs[i].getName().equals(varible)) {
fs[i].setAccessible(true);
return (String) fs[i].get(thing.newInstance());
}
}
return null;
}
}
第一个打印请求"ATR_DEPT"
将打印VISUAL ARTS
,对不存在的第二个请求"COMP_DEPT"
将返回 null;