Это действительно кажется странным вопросом, но на самом деле я не мог придумать лучшего способа задать его. Я создал класс под названием Brand, который генерирует исключение недопустимого имени, когда имя имеет значение null или пусто, точно так же (только конструктор):
public Brand(String name, String producer, String region) throws ExInvalidBrand {
if (name == null || name.equals("")) {
throw new ExInvalidBrand("Brand name cannot be empty or null!");
}
this.name = name;
this.producer = producer;
this.region = region;
}
Теперь мне нужно создать подкласс из этого, который должен генерировать то же исключение, но при его выдаче должен изменить свое имя на "White Brand". Конструктор подкласса:
public CommercialBrand(String name, String producer, String region) throws ExInvalidBrand{
super(name, producer, region);
}
Как я вижу, мне нужно использовать ключевое слово super, поэтому я фактически наследую их переменные. Подкласс генерирует Exception, как и ожидалось, когда имя пусто.
Единственный известный мне способ - это создать новый конструктор в основном классе, который не запрашивает имя, а затем вызвать его в подклассе, также создайте новое имя частной переменной и попробуйте / отловите там исключение.
Можно ли это сделать с помощью конструктора, который у меня есть прямо сейчас?
Это действительно странный вопрос, я Я счастлив прояснить все, что могу по этому поводу.
РЕДАКТИРОВАТЬ: Я заметил, что, вероятно, я плохо объяснил себя.
Представьте, что у нас есть этот psvm:
public static void main(String[] args) throws ExInvalidBrand {
Brand br = new Brand("brand1", "producer1", "region1"); //here an object is created with the name = brand1, producer = producer1 and region = region1
CommercialBrand cb = new CommercialBrand("brand1", "producer1" , "region1"); // same as above, but now from the subclass.
CommercialBrand cbWithNoName = CommercialBrand("", "producer1", "region1");
}
Это то, что я хочу. Когда это происходит, тем не менее следует создать объект cbWithNoName и присвоить ему имя «Белая марка» при возникновении исключения. Было бы здорово попробовать / поймать перед супер, что-то вроде этого, , если бы это было возможно, что не , насколько я знаю.
public MarcaComercial(String name, String producer, String region) throws ExInvalidBrand{
try {
super(name, producer, region);
} catch (ExMarcaInvalida ex) {
super("WhiteBrand", producer, region);
}
}