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
廣告
© . All rights reserved.