配列の clone は getMethod では取得できない

へぇ、配列の clone メソッドは getMethod では取得できないんだ。初めて知った。配列の特殊扱いっぷりがわかって面白い。
で、実は clone は Object に protected メソッドとして定義されているからそもそも毎回 getMethod しなくていいのだな。これが。

public static final CopyUtils {
   private static final Method clone;

   static {
       try {
           clone = Object.class.getDeclaredMethod("clone");
       } catch (NoSuchMethodException e) {
           throw new InternalError();
       }
   }
}

てな感じで良い。
あと、toCopyable で返されたオブジェクトは後 copy するしかなくて無意味な気がする。まんま clone したオブジェクトを返すメソッドのほうがいいんじゃないかなぁ。