错误:Error:(13,56) java: -source 1.5 中不支持 diamond 运算符

1.编译时报错

2.原因

2.1 Java中的Diamond运算符

在Java 7之前创建泛型对象,需要重复指定泛型类型。如:

 FutureTask<String> futureTask = new FutureTask<String>(thread);

这不仅增加了代码的冗余,也增加了阅读和维护代码的难度。为了解决这个问题,Java 7引入了Diamond运算符(<>),它允许我们在创建泛型对象时省略类型参数。然而,需要注意的是,Java 7的Diamond运算符有一个限制:在-source 1.5的设置下,不支持Diamond运算符的使用。

2.2 Diamond运算符的使用 

示例:

 FutureTask<String> futureTask = new FutureTask<>(thread);

在上面的代码中,创建了一个futureTask对象,并使用Diamond运算符省略了第二个FutureTask<>中的类型参数。在这种情况下,编译器会根据变量的声明类型自动推断出类型参数。

2.3  Diamond运算符的限制

Diamond运算符在Java 7的-source 1.5设置下是不支持的。这是因为在Java 7之前的版本中,Java编译器无法正确地推断泛型类型参数。因此,在这种设置下,尝试使用Diamond运算符会导致编译错误。 

3.解决 

在网上找了三种方案,第一种不行,第二种没试,第三种解决了我的问题 。

3.1 第一种 

在File->Setting中设置如下: 

然后检查:File->Project Structure里面的相关配置:

 

 

3.2 第二种 

在pom.xml文件中添加 

<plugins>
    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.1</version> 
        <configuration> 
            <source>1.7</source> 
            <target>1.7</target> 
            <encoding>UTF-8</encoding> 
        </configuration> 
     </plugin>
</plugins>
3.3 第三种 

在File->Setting->Build->Build Tools->Maven下找到你的maven的配置文件地址,然后根据地址在maven安装目录下找到settings.xml文件,检查配置文件中是否设置了全局jdk版本,如没有,则设置如下:

<profiles>
  <profile>
     <id>jdk1.8</id>
     <activation>
         <activeByDefault>true</activeByDefault>
         <jdk>1.8</jdk>
     </activation>
     <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <maven.compiler.source>1.8</maven.compiler.source>
          <maven.compiler.target>1.8</maven.compiler.target>
          <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
     </properties>
  </profile>
</profiles>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值