>>956
キャストはプリミティブ型にもあるっしょ

ナローイング変換
long l = 10;
int i = (int)l;

ボクシング変換
Object o = 1;
int i = (int)o;

>>952のようなclone()の実装で
clone()を呼ばないなら型は同じなのでキャストは必要ない
clone()を呼ぶのはオブジェクトの状態を共有するのを避けるため
プリミティブ型のときは状態がないのでキャストは必要ない
参照型であってもString型のようにオブジェクトの状態が不変であれば
clone()を呼ばなくて良いしキャストも必要ない