Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类引用

Java 有用资源

Java - 基于值类的警告



一些类,例如 `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
广告