リフレクションを探しているように聞こえます(または、クラス内の変数を検索する代わりに別のデータ型を使用したい場合は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
れ、存在しないものへの 2 番目の要求は"COMP_DEPT"
null を返します。