 <p>Use a static helper method:</p> <pre><code>public Triangle(Triangle other) { super(clonePoints(other)); } private static Point[] clonePoints(Triangle other) { if (other == null) { // ... } return other.getPoints().clone(); } </code></pre> <p>Also, what I often do is create a more generic helper method as such:</p> <pre><code>public Triangle(Triangle other) { super(neverNull(other).getPoints().clone()); } private static &lt;S extends Shape&gt; S neverNull(S notNull) { if (notNull == null) { // throw a meaningful exception // or return a default value for S if possible / reasonable } return notNull; } </code></pre>