Java 8的模式匹配接口显示编译器警告
我正在构建一个命令行工具,它应该验证一些逻辑,如果失败,它应该打印错误并退出,其中一些逻辑可能引发运行时异常。我正在使用下面的java双消费者接口
BiConsumer<Consumer<T>,String> tryOrDie =
(block,msg)->
{
try
{
block.accept((T) this);
}
catch (Throwable t)
{
log.error(t.getMessage(), t);
log.error(msg);
System.exit(-1);
}
};
例如,如果我的块让其他进程运行这个工具。可以这样调用它,以获取具有此程序(MyProgram)名称的其他UNIX java进程
final String currentPid=ManagementFactory.getRuntimeMXBean().getName();
currentPid=currentPid.substring(0,currentPid.indexOf("@"));
String GET_ALERT_PID="ps -ef | grep MyProgram | grep -v grep | tr -s ' ' | cut -d ' ' -f 2";
tryOrDie.accept(y->{
otherPids = new BufferedReader(new InputStreamReader(Wrap.startProcess(GET_ALERT_PID))).lines().map(String::trim)
.filter(pid -> !pid.equalsIgnoreCase(currentPid))
.collect(Collectors.toList());
}, "Could not determine if other running processIds of MyProgram were running");
代码按预期工作,但我仍然收到编译器警告 类型安全:未选中从MyProgram到T的强制转换 在线
block.accept((T) this);
这会导致内存泄漏或其他问题吗?在编译器中删除这种类型安全性有什么帮助吗?那会有帮助的
共 (0) 个答案