请勿使用 java.lang.ref.Reference clone 方法

在 Java 8 及以前的版本中,应用程序可以调用克隆上的 java.lang.ref.Reference 或其任何已知子类:java.lang.ref.PhantomReference, java.lang.ref.SoftReferencejava.lang.ref.WeakReference. 但是,在 Java 11 中,"... java.lang.ref.Reference.clone() 方法已被重写 方法被重写,以总是抛出 CloneNotSupportedException.调用 方法的应用程序应将克隆调用替换为构造函数调用,并将引用和引用队列 作为参数。

此规则将标记可能导致抛出 CloneNotSupportedException 的潜在 clone 调用。 检查应用程序,替换任何可能解析为 为 java.lang.ref.Reference.clone() 或其任何已知子类: java.lang.ref.PhantomReference, java.lang.ref.SoftReferencejava.lang.ref.WeakReference.

该规则具有自动修复功能,可替换任何可能解析为 java.lang.ref.Reference.clone() 或其已知子类的克隆调用。 其任何已知子类: java.lang.ref.PhantomReference, java.lang.ref.SoftReferencejava.lang.ref.WeakReference 的构造函数调用,并将引用和引用队列作为参数传入。 将定制配置复制到应用程序构建文件以启用修订自动化。

有关 Java 11 更改的更多信息,请参阅 Java 11 Release Notes。 有关 java.lang.ref.Reference 类的更多信息,请参阅 Java 类文档