Java:变量需要类和接口(interface)

标签 java interface

我有以下类和接口(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/

相关文章:

c# - 强制执行通用接口(interface)子类型

winapi - 了解在 COM 对象上查询哪些接口(interface)

python - C++调用Python如何处理SystemExit异常

java - URL 编码对我的字符串进行两次编码

java - 如何将接受的对象分配给泛型?

java - 如何在 SplashScreen 之后启动另一个 Activity。启动画面在给定的计时器之后崩溃

java - 为什么我的接口(interface)类型化对象不会执行接口(interface)中未声明的方法?

java - 更改 smartGWT 中的过滤标准

java - 在Java中调用Kotlin时如何省略构造函数参数的默认值?

c# - 索引器作为 C# 中接口(interface)的一部分