title: Is Cloneable needed here?
body: <p>Findbugs gives me for <code>public GsmSignalStrength clone()</code> following warning:
  Class defines clone() but doesn't implement Cloneable.</p>
  
  <p>Why do I have to implement Cloneable? Is it because of shallow and deep copy? I have to apologize for my bad Java skills, but I'm a Java newbie.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>class GsmSignalStrength
  {
      static final byte SIGNAL_STRENGTH_UNKNOWN = 99;
      static final byte SIGNAL_STRENGTH_1 = 1;
      static final byte SIGNAL_STRENGTH_2 = 2;
      static final byte SIGNAL_STRENGTH_3 = 3;
      static final byte SIGNAL_STRENGTH_4 = 4;
      static final byte SIGNAL_STRENGTH_5 = 5;
  
      /* Constructors */
  
      GsmSignalStrength(byte signalStrength)
      {
          initClassVars(signalStrength);
      }
  
      GsmSignalStrength()
      {
          initClassVars(SIGNAL_STRENGTH_UNKNOWN);
      }
  
      GsmSignalStrength(byte[] serializedData, IntClass deserializationIndex)
      {
          initClassVars(SIGNAL_STRENGTH_UNKNOWN);
          setClassProperties(serializedData, deserializationIndex);
      }
  
      byte value;
  
      /* Methods */
  
      public void copyTo(GsmSignalStrength destination)
      {
          destination.value = this.value;
      }
  
      public GsmSignalStrength clone()
      {
          GsmSignalStrength clonedValue = new GsmSignalStrength();
  
          this.copyTo(clonedValue);
  
          return clonedValue;
      }
  
      private void initClassVars(byte signalStrength)
      {
          this.value = signalStrength;
      }
  }
  </code></pre>