如何将含Lambda表达式的Java代码转换为Java 1.7兼容写法?
解决方法:将Lambda表达式替换为匿名内部类
原代码中的Lambda表达式是实现了PrivateKeyStrategy接口的chooseAlias方法,Java 7不支持Lambda语法,直接用匿名内部类即可替代:
SSLContext sslContext = SSLContexts.custom().loadKeyMaterial( MutualHttpsMain.class.getResource(TEST_CLIENT_KEYSTORE_RESOURCE), storePassword, keyPassword, new PrivateKeyStrategy() { @Override public String chooseAlias(Map<String, PrivateKeyDetails> aliases, Socket socket) { return aliases.keySet().iterator().next(); } } ).build();
额外排查建议
如果已经配置JDK 1.8但仍报-source 1.7相关错误,检查Eclipse的两个关键配置:
- 右键项目 → 属性 → Java Compiler,确保Compiler compliance level设置为1.8,同时取消勾选"Use compliance from execution environment on the 'Java Build Path'"(如果存在)
- 右键项目 → 属性 → Java Build Path → Libraries,确认JRE System Library为Java 1.8版本,若不是则点击"Edit"更换为对应版本的JRE
内容的提问来源于stack exchange,提问作者jstack100
相关产品推荐
相关产品推荐

