Cast d'un objet de type classe passée en paramètre

J'ai une classe parent et 2 enfants de classes. Je suis en train de mettre en œuvre une fonction qui prend le type de l'enfant et qui l'enfant en tant que paramètres.

Lorsque j'utilise child.newInstance(), je veux le stocker dans une variable de type qui est passé et appeler une fonction à partir de la deuxième paramètre.

Ci-dessous sont les classes

public class Parent {
    public void test() {
        System.out.println("Test from parent");
    }
}

public class ChildA extends Parent {
    public void testChildA() {
        System.out.println("Test from child a");
    }
}

public class ChildB extends Parent {
    public void testChildB() {
        System.out.println("Test from child b");
    }
}

et voici la méthode que je suis en train de mettre en œuvre

public class Driver {
    Parent func(Class child, String whichChild) throws Exception {
        //whichChild: "ChildA" or "ChildB"

        Object obj = child.newInstance();
        //cast obj to type of child and call the method "test" and "test" + whichChild
    }
}

Peut-il être fait à ce que je suis en train de faire? Si oui, comment puis-je lance cet objet au type qui est passé?

Que voulez-vous atteindre avec ce ? et pourquoi ne pas vous surcharger de test chez les enfants?
Je ne peux pas changer la structure des classes et je ne peux pas remplacer les méthodes, parce que l'enfant méthodes de faire d'autres fonctionnalités, j'ai ajouté le super.test(); par erreur, désolé
Au moment de la compilation de la sécurité et de l'analyse statique sont très puissants et d'outils utiles, lors de l'utilisation de la réflexion de l'API, vous perdez tous les avantages qu'ils procurent. Vous ne savez pas si le code fonctionne jusqu'à ce que vous l'exécutez. Il ne sera pas possible de trouver des usages de l'méthodes vous appel à l'aide de la réflexion. Aussi IDE sera de rapports que les méthodes ne sont pas utilisés, ce qui ne sera pas vrai. Voir Andy Turner réponse quelle est la meilleure façon de faire quelque chose comme ça.
pouvez-vous ajouter de la méthode abstraite dans Parent classe?
Il semble comme un endroit parfait pour l'héritage. Pourquoi ne pouvez-vous pas modifier Parent classe?

OriginalL'auteur hakuna matata | 2015-11-06