После хорошего ночного сна .... это не то, что я хотел сделать, это неправильно, но мой подход вообще. Я вернулся к своему началу ООП. Мне стыдно. В любом случае, я дал ответ @juanp, потому что он сказал: «Моя рекомендация 4 - немного больше узнать о наследовании java».
Для тех, кому интересно, вот как это должно выглядеть:
Сгенерированный класс P_Gen:
public abstract class P_Gen{
protected String s;
protected Object oP;
public P_Gen(String str){
this.s = str;
init(str);
}
protected void init(String str){
if(this instanceof P){
oP = new MyClass((P)this);
}
}
}
Расширенный класс P:
public class P extends P_Gen{
public String sSTR;
public P(String str){
super(str);
}
@Override
protected void init(String str){
this.sSTR = str;
this.oP = new MyClass(this);
}
}
Класс MyClass:
public class MyClass{
protected Object oMC;
public MyClass(P extendedObject){
this.oMC = extendedObject.sSTR;
}
}
Я переместил создание экземпляра MyClass из конструктора в функцию init. Эта функция инициализации затем переопределяется в расширенном классе ..... очень простые вещи, которые я знаю.
Еще более простой добавленный в мой класс P_Gen аннотация, чтобы предотвратить его непосредственное создание. Я также мог бы объявить абстрактный метод init в P_Gen.
Все это заставляет меня думать, что может быть .... :-) ... в другой день. Спасибо, что помог мне вернуться на правильный путь.