Микроконтроллер может быть столь же простым как ROM (instruction*2^x + (фаза часов) адрес, выводы являются сигналами управления, и Вы хороши для движения). Или это может быть комплекс, изматывают зверя тремя руками, и предсказание ветвлений поддерживают аппаратные средства.
можно ли предоставить больше подробную информацию о стремлениях?
Очевидным решением является добавление метода к вашему интерфейсу, который возвращает компонент (который может быть this
).
JComponent getComponent();
Или даже обобщить ваш интерфейс:
public interface MyInterface<C extends JComponent> {
C getComponent();
[...]
}
Это не лучший дизайн, но он должен работать.
Могут быть сценарии, в которых это не сработает, но использование универсальных шаблонов позволяет вам указать несколько типов:
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;
}
}
Зачем вы это делаете?
Интерфейсы по самой своей природе не должны ограничиваться подобным образом, и необходимость этого, на мой взгляд, свидетельствует о том, что ваш дизайн, по крайней мере, вы слишком сложны или, что еще хуже, в чем-то ошибочны.
Я думаю, что до тех пор, пока интерфейс четко назван и отражает единую концепцию, он служит своей цели.