Можно ли вызвать абстрактный конструктор в одном методе, а затем передать его некоторым другим методам, каждый из которых будет преобразовывать новый объект в определенные подклассы? То есть
public AbstractClass createNewAbstractClass() {
//do lots of checks that are the same for each sub class,
//including geting and checking each variable,
//and an exception thrown by the constructor.
AbstractClass abstractClassObject = new AbstractClass(var1, ...);
return abstractClassObject;
}
public SubClassOne createSubClassOneObject() {
SubClassOne subClassOneObject = (SubClassOne)createNewAbstractClass(var1,..);
return subClassOneObject;
}
public SubClassTwo createSubClassTwoObject() { ...
Один из способов обойти это состоит в том, чтобы получить и проверить все переменные в одном методе, а затем вернуть их в массиве, чтобы метод createSubClassNObject()
мог использовать их в правильном конструкторе, но это выглядит довольно грязно, и это будет означать, что каждый метод create должен будет проверять одно и то же исключение одинаково и делать одно и то же с ним, что похоже на ситуацию, которую вы должны попытаться передать другому методу!
Мне интересно с практической точки зрения - я хочу, чтобы мой код был аккуратным и читабельным, но также и с теоретической точки зрения - возможно ли это на самом деле? Поэтому, даже если ответ «нет», вы можете объяснить, почему?