Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:change";VK_UP";到KeyEvent.VK_UP_Java_Parsing_Hashmap_Keyevent - Fatal编程技术网

Java:change";VK_UP";到KeyEvent.VK_UP

Java:change";VK_UP";到KeyEvent.VK_UP,java,parsing,hashmap,keyevent,Java,Parsing,Hashmap,Keyevent,我需要将Java中的“VK_UP”(或者干脆“UP”)之类的文本更改/解析为KeyEvent.VK_UP常量。我不想改用数字38,因为它将保存在.txt配置文件中,这样任何人都可以重写它 最好的解决方案是使用此hashmap: HashMap<String, Integer> keyConstant; HashMap键常量; 其中key是名称(“VK_UP”),value是key code(38) 现在的问题是:如何在不花费整个晚上手动创建地图的情况下获取此地图?您可以使用反射

我需要将Java中的
“VK_UP”
(或者干脆
“UP”
)之类的文本更改/解析为
KeyEvent.VK_UP
常量。我不想改用数字
38
,因为它将保存在
.txt
配置文件中,这样任何人都可以重写它

最好的解决方案是使用此hashmap:

HashMap<String, Integer> keyConstant;
HashMap键常量;
其中key是名称(
“VK_UP”
),value是key code(
38


现在的问题是:如何在不花费整个晚上手动创建地图的情况下获取此地图?

您可以使用反射

以下几行中的一些应该可以工作,SAN异常处理:

public static int parseKeycode(String keycode) {
    // We assume keycode is in the format VK_{KEY}
    Class keys = KeyEvent.class; // This is where all the keys are stored.
    Field key = keys.getDeclaredField(keycode); // Get the field by name.
    int keycode = key.get(null); // The VK_{KEY} fields are static, so we pass 'null' as the reflection accessor's instance.
    return keycode;
}
或者,您可以使用简单的一行:

KeyEvent.class.getDeclaredField(keycode).get(null);
反射