java: how to use clone() and what about the cast check

前端 未结 4 996
小蘑菇
小蘑菇 2020-12-11 08:14

This code:

class RawStringIterator {
        java.util.Stack stateStack = new java.util.Stack();
        RawStringIterator(RawStrin         


        
4条回答
  •  悲哀的现实
    2020-12-11 08:44

    If you have the choice, the best is not to implement / use clone() at all, because it is a broken API. Just implement / use a copy constructor instead.

    If for some pressing reason you must use clone() but can change its implementation, consider declaring Stack.clone() to return Stack instead of Object - covariant return types are legal since Java5.

    Update: if the Stack in question is java.util.Stack, consider its Javadoc:

    A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class.

    And e.g. ArrayDeque provides a copy constructor.

提交回复
热议问题