Могу ли я вызвать тип AbstractClass в конструкторе? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Могу ли я вызвать тип AbstractClass в конструкторе? [закрыто]

Сообщение Гость »

Предположим, у меня есть три класса.
Абстрактный класс

Код: Выделить всё

public class AbstractDetectorBase extends AbstractDevice implements IDetector {
private boolean detected;

protected AbstractDetectorBase(...args){
// Constructor
}

// Other class stuff

public setDetected(boolean detected) {
this.detected = detected;
foo();
}
}
Конкретный класс

Код: Выделить всё

public class RealDetectorClass extends AbstractDetectorBase implements IDetector {

RealDetector(...args) {
super(...args);
}

// Other class stuff

public setDetected(boolean detected){
super(detected);
}
}
И класс-оболочка

Код: Выделить всё

public ReportingDetector implements IDetector {

private final IDetector detector;

public ReportingDetector(IDetector detector, ...other args){
this.detector = detector;
}

// Other class stuff

public void setDetected(boolean detected){
detector.setDetected(detected);
bar();
}
}
В этом случае функции foo() и bar() будут перекрываться, но не будут полностью одинаковыми. Я пытаюсь получить код, находящийся в абстрактном классе, из класса-оболочки, чтобы избежать дублирования кода и возможного повторения. Экземпляры конкретного класса будут работать правильно. Если я знаю, что конкретный класс внутри оболочки будет расширять абстрактный класс, как мне указать это в сигнатуре конструктора? Возможно, я бы тоже мог его кастовать, но мне бы не хотелось делать это при каждом вызове поля.
Я пробовал

Код: Выделить всё

ReportingDetector(IDetector extends AbstractDetectorBase detector, ...args)
ReportingDetector(IDetector detector, ...args)
ReportingDetector(IDetector detector, ...args)
Или это вообще возможно сделать?

Подробнее здесь: https://stackoverflow.com/questions/782 ... onstructor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»