I've been reading Joshua Bloch's Effective Java and it states clearly that non-final methods should not be called inside a constructor and I understand why calling them can be a problem.
My surprise has been when reading openjdk code and seeing that, in the "copy constructor" for LinkedList, non-final method addAll (inherited from AbstractCollection) is called.
If the Java writers themselves do this, there must be circumstances in which doing it is safe. When is it safe to do so? If I define another collection class, am I allowed to call addAll in a constructor?