有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案