Comment convertir une instance d'une classe en une sous-classe et ajouter des propriétés afin qu'une classe ClassCastException ne soit pas générée? Par exemple:Ajouter des propriétés à une instance de superclasse pour le transformer en instance de sous-classe
public class Shape {
private int length;
private int width;
public Shape(int length, int width) {
this.length = length;
this.width = width;
}
}
public class Solid extends Shape {
private int height;
public Solid (int length, int width, int height) {
super(length, width);
this.height = height;
}
}
public class Test {
public static void main(String[] args) {
Shape shape = new Shape(1, 2);
//Do something to change the shape instance to solid instance.
Solid solid = (Solid) shape;//Makes it does not throw ClassCastException.
System.out.println(shape instanceof Solid);//Makes it print true.
System.out.println(shape == solid);//Makes it print true.
}
}
Je sais que je peux créer une nouvelle instance de solide et d'importer les propriétés de l'ancienne instance, mais je veux ajouter des propriétés à l'ancienne instance à la place si l'on compare avec == retourne vrai. Des idées?
Vous ne pouvez pas changer le temps d'exécution type d'un objet une fois que vous l'avez créé. Si vous voulez créer une instance de 'Solid', changez simplement votre première ligne en' new Solid (1, 2, 3) '. Ce que vous essayez d'accomplir n'est pas très clair, pour être honnête. –
@RcExtract Veuillez mettre à jour votre question pour inclure la raison pour laquelle vous souhaitez ajouter une propriété supplémentaire à une classe existante à partir d'une bibliothèque externe. Qui réagirait sur cette nouvelle propriété lorsqu'elle n'est pas définie par la classe/bibliothèque d'origine? Cela ressemble à un problème XY, peut-être que vous devriez indiquer votre problème d'origine. – Progman