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

Imagen de ezamudio

sistema de tipos

Creo que necesitas conocer mejor el sistema de tipos de Java. En este caso particular, la sobrecarga de métodos y la palabra reservada new.

Ejemplo de lo que comenta

Ejemplo de lo que comenta @afplmex

class Main {
    public static void main( String ... args )  throws Exception  {
        M unaM = (M) Class.forName(args[0]).newInstance(); // Llave o Lente
        unaM.m();

    }
}
interface M {
    public void m();
}
class Llave implements M {

    public void m() {
        System.out.println("llave");
    }
}
class Lente implements M {
    public void m() {
        System.out.println("llave");
    }
}