Crear objecto a partir de una clase

Buen día a todos.

Me gustaría implementar lo siguiente:

Tengo un servicio al cual le llegan x parámetros y en uno de esos le mando el nombre de la clase "llave" por ejemplo y usando el siguiente código obtengo la clase y solo ocuparia castear al objecto usuario.
 Class.forName("llave").newInstance()

hasta aquí todo bien pero lo que realmente me gustaría hacer es no tener que castear el objeto ya que lo envió a un método (sobrescrito).

les comparto el comparto un pequeño código de prueba:

Existirá alguna manera de no tener que hacer el cast al mandar a llamar el método "metodoInvocado"...?? y que solo llame el método una vez y ya lo mande a su respectivo método sobrescrito.

public class Main {

        public static void main(String[] args) throws Exception {
                String class1 = "clases.llave";
                String class2 = "clases.lente";
                metodoInvocado((llave) Class.forName(class1).newInstance());
        }

        //METODOS SOBREESCRITOS
        public static boolean metodoInvocado(llave tipo) {
                System.out.println("ENTRO LLAVE");
                return true;
        }

        public static boolean metodoInvocado(lente tipo) {
                System.out.println("ENTRO LENTE");
                return true;
        }
}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Usa un factory

Checa el patron factory

Implementando interfaz

Se ma ocurre que si ambas clases implementan una interfaz en común, ambas clases tendían el método que deseas invocar