我有以下类和接口(interface)
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 必须满足两个要求:它必须是任何类型的 Component 并且必须实现接口(interface) R。因此,变量具有相同的要求。
我完全不确定该采取哪种方法?我应该创建某种扩展 Component 的抽象类来实现 R 吗?我是否可以跳过接口(interface) R 的要求,只用 try catch 来实现?我应该使用泛型类吗?当涉及到变量时我该怎么做? 有什么建议吗?
最佳答案
如果您想编写一个接受必须扩展 Component
并实现 R
的参数的方法,您可以这样做:
public <T extends Component & R> void myMethod(T item) {
...
}
然后您应该能够将其类型扩展/实现您指定的类型的任何参数传递到您的方法中。
参见https://docs.oracle.com/javase/tutorial/java/generics/bounded.html
关于Java:变量需要类和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947548/