Java:变量需要类和接口

时间:2017-07-06 11:24:39

标签: java 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必须满足两个要求:它必须是任何类型的组件并且必须实现接口R.因此变量具有相同的要求。

我不确定采取哪种方法?我应该做一些扩展Component的抽象类,实现R?我可以跳过接口R的要求,只需用try catch做吗?我应该使用泛型类,在变量方面我该怎么做? 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您想编写一个接受必须扩展Component并实现R的参数的方法,您可以这样做:

public <T extends Component & R> void myMethod(T item) {
    ...
}

然后你应该能够将任何类型扩展/实现你指定类型的参数传递给你的方法。

请参阅https://docs.oracle.com/javase/tutorial/java/generics/bounded.html