java - 将元素类型对象转换为映射条目时出错
问题描述
当我想从对象转换为 map.entry 时遇到问题。当我想尝试时,这里有任何问题。我尝试修复它,这里没有建议。为什么这样?
这是我的源代码
private static HashMap getCommonEnvironment(final List blacklist) {
final String[] entries = { "PATH", "PATH", "LD_LIBRARY_PATH", "LD_ASSUME_KERNEL", "USER", "TMP", "TEMP", "HOME", "HOMEPATH", "LANG", "TZ", "OS" };
final HashMap defaultEnv = new HashMap();
Method m = null;
try {
m = System.class.getMethod("getenv", String.class);
}
catch (Exception ex) {}
for (int i = 0; i < entries.length; ++i) {
String val = null;
if (m != null) {
try {
val = (String)m.invoke(System.class, entries[i]);
}
catch (Exception e2) {
m = null;
}
}
if (val == null) {
try {
val = System.getProperty(entries[i]);
}
catch (Exception ex2) {}
}
if (val != null && !blacklist.contains(entries[i])) {
defaultEnv.put(entries[i], val);
}
}
String key;
String val = key = null;
if (new File("c:/winnt").isDirectory()) {
val = "c:\\winnt";
}
else if (new File("c:/windows").isDirectory()) {
val = "c:\\windows";
}
try {
final String s = System.getenv(key = "SystemRoot");
if (s != null) {
val = s;
}
}
catch (Throwable t) {}
try {
final String s = System.getProperty(key = "Windows.SystemRoot");
if (s != null) {
val = s;
}
}
catch (Throwable t2) {}
if (val != null && !blacklist.contains(key)) {
defaultEnv.put("SystemRoot", val);
}
try {
m = System.class.getMethod("getenv", (Class<?>[])Util.ZERO_PARAM);
final Map map = (Map)m.invoke(System.class, Util.ZERO_ARG);
for (final Map.Entry entry : map.entrySet()) {
key = (String) entry.getKey();
val = (String) entry.getValue();
if (!blacklist.contains(key)) {
defaultEnv.put(key, val);
}
}
}
catch (Exception e) {
e.printStackTrace();
}
return defaultEnv;
}
我的错误符合我的想法,无法从对象转换为 map.entry
for (final Map.Entry entry : map.entrySet()) {
key = (String) entry.getKey();
val = (String) entry.getValue();
if (!blacklist.contains(key)) {
defaultEnv.put(key, val);
}
我的问题是这段代码有什么问题?
解决方案
final Map<String,String> map = m.invoke(System.class, Util.ZERO_ARG);
for (final Map.Entry<String,String> entry : map.entrySet()) {
key = entry.getKey();
val = entry.getValue();
if (!blacklist.contains(key)) {
defaultEnv.put(key, val);
}
}
您可以添加具体类型。
推荐阅读
- python - 将图像保存到 SQLite 数据库
- javascript - 计算器显示语法错误和referenceError
- python - 如何使用 python api O365 获取其他人的日程安排
- python - 更新到 macOS Catalina 并重新安装 Anaconda 后,Jupyter 无法打开
- swift - 如何修复错误“线程 1:信号 SIGABRT”?
- android - 如何将数据库中的数据传递给微调器
- r - R:如何求项目集的升力?
- python - pip安装后Python看不到包
- python - 如何打开用户输入的 CSV 文件 - python?
- flutter - Flutter googleMap onTap longPress