import java.util.Scanner;
//=================================================================================================
public class UseReflection {
//-------------------------------------------------------------------------------------------------
    private static final Scanner keyboard = new Scanner(System.in);
//-------------------------------------------------------------------------------------------------
    public static void main(String[] args) {

        Object myThing;

        System.out.print("(C)op, (G)rad student, (S)tring, (P)erson : ");
        switch (Character.toUpperCase(keyboard.nextLine().charAt(0))) {
            case 'C':
                myThing = new Cop("Mr Plod");
                break;
            case 'G':
                myThing = new GraduateStudent("Max Headroom");
                break;
            case 'S':
                myThing = "A random string";
                break;
            case 'P':
                myThing = new Person1("Tom Le Blanc");
                break;
            default:
                myThing = null;
                System.out.println("ERROR: I should never get here");
                break;
        }

        whatAmI(myThing);

        if (myThing instanceof Cop) {
            System.out.println("I wish I had a Gun");
        }
    }
//-------------------------------------------------------------------------------------------------
    private static void whatAmI(Object someThing) {

        Class someThingsClass;
        String someThingsClassName;

        someThingsClass = someThing.getClass();
        someThingsClassName = someThingsClass.getName();

        System.out.println("I am a " + someThingsClassName);
    }
//-------------------------------------------------------------------------------------------------
}
//=================================================================================================
