当前位置: 首页 > 面试题库 >

为什么Java 7不能使用Diamond运算符和multi-catch语句

池赞
2023-03-14
问题内容

um(使用Java 7(1.7.0_67))并将项目语言级别设置为7-钻石,ARM,多捕获。我的代码如下,使用maven进行构建时会引发编译错误的行。

private Map<String, List<InstrumentationClassData>> classMap = new HashMap<>(); //line 36 in InstrumentingAgent

InstrumentingAgent第63行中的多捕获块

} catch (InstrumentationException | JAXBException e){
            e.getMessage();
}

编译时出现以下错误。为什么不起作用?我究竟做错了什么。我正在使用IntelliJ IDE。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project instrumentation-agent: Compilation failure: Compilation failure:
[ERROR] /home/Documents/instrumentation-agent/src/main/java/org/wso2/das/javaagent/instrumentation/InstrumentingAgent.java:[36,79] error: diamond operator is not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable diamond operator)
[ERROR] /home/Documents/instrumentation-agent/src/main/java/org/wso2/das/javaagent/instrumentation/InstrumentingAgent.java:[63,47] error: multi-catch statement is not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable multi-catch statement)

根据我所读的内容,钻石算子应该与Java
7一起使用。但是为什么我要使用它。如果我用相关的类型填充菱形,那么IDE会将它们变成灰色,并说可以用菱形运算符替换。但是当我更换它时,会出现以下错误。


问题答案:

在pom中添加以下内容可解决编译错误,

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>


 类似资料:
  • um使用Java7(1.7.0_67),项目语言级别设置为7-Diamond、ARM、multi-catch。我的代码如下,使用maven构建时抛出编译错误的行。 InstrumentingAgent行63中的多捕捉块 编译时我遇到了以下错误。为什么它不起作用?我做错了什么。我正在使用IntelliJ IDE。 根据我所读的钻石运算符应该与Java7一起工作。但是为什么我得到这个。如果我用相关类型

  • 问题内容: 考虑下面的Java代码,它尝试实例化一些: 并且很简单;在Java 7中使用新的Diamond运算符来减少不必要的类型参数重复。 是使用匿名类的一种变体,可能会覆盖的某些方法。 尝试使用菱形运算符,类似于,但这是编译错误,消息 “ <>”不能与匿名类一起使用。 产生一个错误,证明编译器知道实际需要的类型。错误消息是 类型不匹配:无法从新的ArrayList (){}转换为List 因此

  • 问题内容: 我正在尝试使用Diamond运算符,但是却收到以下消息: -source 1.5中不支持Diamond运算符(使用-source 7或更高版本来启用Diamond运算符) 它可以在Android的netbeans中修复吗? 问题答案: Android需要Java来源合规性5.0或6.0(Java5 / 6)。开箱即用不支持Java7。这些文章描述了有关如何使用某些Java7功能的技巧:

  • 问题内容: 在Java 1.7.0_55中,如果我编写此字段声明,则会收到编译错误(“不兼容的类型”): 如果我将其改为: 它编译良好。(我在这里以syncedMap为例,但其他Collections方法,不可修改,同步等也是如此) 但是,为什么钻石操作员不能像我在这里期望的那样工作?由于Collections.synchronizedMap()声明为: 在我看来,构造函数调用的类型参数必须与字段

  • 问题内容: 我正在使用maven 3.3.9在Jenkins上运行编译。我在某些代码上收到此错误,但不是全部: -source 1.6不支持multi-catch语句(使用-source 7或更高版本来启用multi-catch语句) 我正在使用Java 8进行编译: 执行Maven:-B -f /opt/jenkins/workspace/product/product-Content- Ope

  • 我正在使用maven 3.3.9在Jenkins上运行编译。我在一些代码(但不是所有代码)上遇到此错误: -source 1.6中不支持multi-catch语句(使用-source 7或更高版本启用multi-catch语句) 我正在用Java 8编译: 执行Maven:-B-f/opt/jenkins/workspace/product/product-Content-Operations\u