Inspectopedia 2024.3 Help

Cloneable class without 'clone()' method

Reports classes implementing the Cloneable interface that don't override the clone() method.

Such classes use the default implementation of clone(), which isn't public but protected, and which does not copy the mutable state of the class.

A quick-fix is available to generate a basic clone() method, which can be used as a basis for a properly functioning clone() method expected from a Cloneable class.

Example:

public class Data implements Cloneable { private String[] names; }

After the quick-fix is applied:

public class Data implements Cloneable { private String[] names; @Override public Data clone() { try { Data clone = (Data) super.clone(); // TODO: copy mutable state here, so the clone can't change the internals of the original return clone; } catch (CloneNotSupportedException e) { throw new AssertionError(); } } }

Locating this inspection

By ID

Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.

CloneableClassWithoutClone
Via Settings dialog

Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.

Settings or Preferences | Editor | Inspections | Java | Cloning issues

Use the Ignore classes cloneable due to inheritance option to ignore classes that are Cloneable because they inherit from the Cloneable class.

Use the Ignore when Cloneable is necessary to call clone() method of super class option to ignore classes that require implementing Cloneable because they call the clone() method from a superclass.

Inspection options

Here you can find the description of settings available for the Cloneable class without 'clone()' method inspection, and the reference of their default values.

Ignore classes cloneable due to inheritance

Default: Selected

Ignore if Cloneable is necessary to call the clone() method of a superclass

Default: Selected

Inspection Details

By default bundled with:

IntelliJ IDEA 2024.3, Qodana for JVM 2024.3,

Can be installed with plugin:

Java, 243.23126

Last modified: 03 December 2024