J'ai besoin de ma classe C pour choisir le constructeur correct basé sur la variable d'instance. J'ai le code de base montré ci-dessous. Chaque fois que je crée une instance d'une classe B et que je la stocke comme référence à A. Le constructeur 'Wrong' est utilisé sur la classe C. Quelles sont mes options pour changer cela si je ne veux pas utiliser (b instanceOf B) parce que c'est dans autre paquet.Java, utiliser le constructeur correct basé sur l'instance
Class A {
}
Class B extends A {
}
Class C {
C(A a){...}
C(B b){...}
}
Class Main{
private createClass(String s){
if (...){
return new B();
}
}
public static void main(String[] args){
A b = createClass("s");
new C(b); //--> constructor C(A a) is used but i need C(B b)
}
}
je l'ai mentionné que instanceOf est pas une option que la classe C est pas dans le même paquet et peut être distribué seul donc un ClassNotFound serait tiré. – Mazmart
CNF sera renvoyé dans tous les cas, alors, si la classe n'est pas accessible, quelle instanceOf doit faire avec. 'Pour ClassNotFoundException: Lance lorsqu'une application tente de charger dans une classe via son nom de chaîne en utilisant: 1. La méthode forName dans la classe Class. 2. La méthode findSystemClass dans la classe ClassLoader. 3. La méthode loadClass dans la classe ClassLoader.' –