Java - 定义一个扩展类 A 并实现接口(interface) B 的成员

标签 java object generics interface anonymous-types

我有一个必须满足两个条件的变量,我想在定义中设置它们

我知道我可以使用单个变量定义任一条件,就像这些示例中的任何一个一样

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/

相关文章:

java - 如何基于日期查询数据库,但您的数据库将日期存储为日期 + 时间。

java - 我应该如何填充我的对象?

java - 使用 eclipse 编译代码但不使用 javac

java - 具有泛型和内部类的模型类的继承

java - JPA Pageable 排序顺序区分大小写

java - 在 JUnit 测试中使用 setter,而无需在类里面使用 setter

c# - 在 C# 中克隆具有 DataTable 和其他对象作为属性的复杂对象

java - java中的对象引用

generics - Dart 使用 IS 运算符检查泛型类型

java - 三元搜索树 - 迭代遍历