我有一个必须满足两个条件的变量,我想在定义中设置它们
我知道我可以使用单个变量定义任一条件,就像这些示例中的任何一个一样
private Class<? extends A> variable; //or
private A variable; //or
private Class<? extends B> variable; //or
private B variable;
但是有没有办法让变量满足这两个条件呢?
我一直希望有这样的事情
private Class<? extends A implements B> variable;
但是当我需要调用它或存储它的多个副本时,我找不到任何方法可以在不进行类型转换的情况下执行此操作
最佳答案
您可以声明具有多个边界的类型参数,例如:
public static <T extends A & B> void test(Class<T> clazz)
但是您不能声明具有多个边界的变量:
private Class<? extends A & B> variable; // doesn't work
您可以创建一个抽象
类C
来扩展A
并实现B
,这样只有一个绑定(bind)是必需的。
abstract class C extends A implements B {}
然后:
private Class<? extends C> variable;
关于Java - 定义一个扩展类 A 并实现接口(interface) B 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32657561/