package com.blogspot.toomuchcoding.book.chapter8._3_ClassCast; import java.util.List; import com.blogspot.toomuchcoding.book.chapter8.common.Person; public class AwefullyCastingNewPersonGenerator { private final IdentityCreator identityCreator; public AwefullyCastingNewPersonGenerator(IdentityCreator identityCreator) { this.identityCreator = identityCreator; } public Person generateNewIdentity(Person person) { String newName = identityCreator.createNewName(person); int newAge = identityCreator.createNewAge(person); List<Person> newSiblings = identityCreator.createNewSiblings(person); Person newPerson = new Person(newName, newAge, newSiblings); if (identityCreator instanceof PersonDataUpdater) { ((PersonDataUpdater) identityCreator).updatePersonData(newPerson); } return newPerson; } }