我有以下类和接口
interface R
class A extends Component implements R
class B extends JButton implements R
class C extends JPanel implements R
class D extends xyz (that extends Component) implements R
所以我有几个类都扩展了某种类型的组件(或多或少直接)并且都实现了R。
然后我有一个不同的F类,它有变量和方法需要像这样工作:
public class F {
public TYPE myVariable;
public myMethod void (TYPE argument) {
//...code...
myVariable = argument;
actionThatRequiresComponent(argument);
argument.actionDefinedInR();
//...code...
}
public anotherMethod void () {
//...code...
myMethod(myVariable);
//...code...
}
}
问题是,TYPE必须满足两个要求:它必须是任何类型的组件并且必须实现接口R.因此变量具有相同的要求。
我不确定采取哪种方法?我应该做一些扩展Component的抽象类,实现R?我可以跳过接口R的要求,只需用try catch做吗?我应该使用泛型类,在变量方面我该怎么做? 有什么建议吗?
答案 0 :(得分:0)
如果您想编写一个接受必须扩展Component
并实现R
的参数的方法,您可以这样做:
public <T extends Component & R> void myMethod(T item) {
...
}
然后你应该能够将任何类型扩展/实现你指定类型的参数传递给你的方法。
请参阅https://docs.oracle.com/javase/tutorial/java/generics/bounded.html