Java 16 值类型类的警告

Java 16 值类型类的警告

一些类,例如java.util.Optional和java.time.LocalDateTime,是值类型类。值类型类的实例是final和不可变的。这些类有注解@jdk.internal.ValueBased,而Java 16现在会在使用synchronized关键字同步这些类时生成编译时警告。包装类也是值类型的。例如,Double类是一个值类型类。

示例

package java.lang;
@jdk.internal.ValueBased
public final class Double extends Number
   implements Comparable<Double>, Constable, ConstantDesc {
   //...
}

考虑以下示例:
ApiTester.java

示例

public class APITester {
   public static void main(String[] args) {
      Double d = 10.0;
      synchronized (d) {
         System.out.println(d);         
      } 
   }
}

编译并运行程序

$javac APITester.java

输出

APITester.java:4: warning: [synchronization] attempt to synchronize on an instance of a value-based class
   synchronized (d) {
   ^
1 warning

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程