Собственно, сам код. Просто любопытно можно ли в Java создавать объекты класса прописывая имя класса создаваемого объекта передавая через класс String. Я и с Object покрутил имя переменной person типа Person, затем пытаясь сузить в скобках при помощи данного выражения к 1-й букве верхнего регистра. Расскажите, пожалуйста, если такое возможно. П.С. Задание я понял, но хочется попробовать упростить код.
public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        Person person = null;
        String key = null;

        //тут цикл по чтению ключей, пункт 1
        while (true)
        {
            key = reader.readLine();
            // не совпадает с одной из ожидаемых(user, loser, coder, proger).
            //создаем объект, пункт 2
            if (key.equals("user") || key.equals("loser") || key.equals("coder") || key.equals("proger")) {

                person = new (key.substring(0,1).toUpperCase())();

                doWork(person); //вызываем doWork
            }
        }
    }

    public static void doWork(Person person) {
        // пункт 3
    }
}