интерфейс только для определенных классов?

Микроконтроллер может быть столь же простым как ROM (instruction*2^x + (фаза часов) адрес, выводы являются сигналами управления, и Вы хороши для движения). Или это может быть комплекс, изматывают зверя тремя руками, и предсказание ветвлений поддерживают аппаратные средства.

можно ли предоставить больше подробную информацию о стремлениях?

5
задан jedierikb 24 August 2009 в 05:19
поделиться

3 ответа

Очевидным решением является добавление метода к вашему интерфейсу, который возвращает компонент (который может быть this ).

JComponent getComponent();

Или даже обобщить ваш интерфейс:

 public interface MyInterface<C extends JComponent> {
     C getComponent();
     [...]
 }

Это не лучший дизайн, но он должен работать.

7
ответ дан 14 December 2019 в 04:44
поделиться

Могут быть сценарии, в которых это не сработает, но использование универсальных шаблонов позволяет вам указать несколько типов:

interface Foo { void frobulize(); }

class Bar {
    <T extends JComponent & Foo> String doFoo(T obj){
        obj.frobulize();
        return obj.getToolTipText();
    }
}

Если вы хотите, чтобы объекты были полями в непараметризованном типе, вы добавляете тип параметры в конструктор (малоизвестная функция, которая обязательно запутает и впечатлит ваших коллег):

class Quux {
    private final Foo foo;
    private final JComponent component;
    public <T extends JComponent & Foo> Quux(T fc){
        foo = fc;
        component = fc;
    }
}
2
ответ дан 14 December 2019 в 04:44
поделиться

Зачем вы это делаете?

Интерфейсы по самой своей природе не должны ограничиваться подобным образом, и необходимость этого, на мой взгляд, свидетельствует о том, что ваш дизайн, по крайней мере, вы слишком сложны или, что еще хуже, в чем-то ошибочны.

Я думаю, что до тех пор, пока интерфейс четко назван и отражает единую концепцию, он служит своей цели.

-1
ответ дан 14 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: