Pen^2 (./28) :C’est en effet un problème d’héritage : si une classe dérive de Singleton, elle pourrait, elle, implémenter Cloneable.
(Et si tu veux bloquer l'héritage, tu déclares A finale et puis hop )
Et même si ça paraît débile de marquer explicitement comme Cloneable une classe dérivant d’un Singleton, il faut se dire que que Singleton ne portera peut-être pas un nom si spécifique et n’aura peut-être pas de documentation.
Certes, on peut marquer le Singleton final, mais peut-être aura-t-on besoin un jour d’en dériver, c’est donc d’après moi une mauvaise idée.
Comme une implémentation de clone() est censée appeler super.clone(), ce clone() du Singleton devrait suffire, mais si le programmeur ne le fait pas (zOMGWTFBBQ ), une protection supplémentaire est de le marquer final (le clone(), pas le Singleton).
Hop, je corrige .