当前位置: 首页 > 面试题库 >

如何在泛型中使用多个上限

呼延化
2023-03-14
问题内容

我有一个具有通用类型的Interface Foo-

 public interface Foo<T> {  
     boolean apply(T t);  
 }

有另一个实现该接口的Bar类,但我想要的是Bar的通用Type应该是Interface A和B类型的集合,使用以下定义,它给出了编译器错误-

public class Bar implements Foo<Collection<? extends A & B>>{
  @Override
  public boolean apply(Collection<? extends A & B> collect){
   ...
  }  
}

您能提出实现此目标的正确方法吗?

我只能在方法级别使用多个范围吗?


问题答案:

这行不行吗?

public class Bar<T extends A & B> implements Foo<Collection<T>>{
  @Override
  public boolean apply(Collection<T> collect){
   ...
  }  
}


 类似资料:
  • 场景:一个应用程序有多个实体。每个实体表示一个数据库表。所有数据库表都有一个主键列,但列名不同。 实体示例: 服务类示例: 问题:如果我像下面这样声明dao接口: 将参数作为发送到JPararePository中,然后我的方法在服务类中运行良好。 但是Spring不允许在没有列的情况下创建类。所以我必须声明一个ID列。同样,在我的数据库中,每个表都有一个主列,但所有表的该列的名称是不同的。例如,表

  • 问题内容: 我想知道是否有可能编写一个接受多种通用类型的函数,如下所示: 那行得通吗?每个参数中的泛型是否意味着每个参数必须具有与泛型相同的类型T? 问题答案: 是的-可能的(虽然不是使用方法签名),是的,使用签名的类型必须相同。 使用给定的签名,必须在呼叫站点将其与单个类型(例如 或 )相关联。但是,您可以声明采用多个类型参数的方法签名 请注意,在上面的签名中,我已经声明了类型以及签名本身。因此

  • 我正在使用泛型在python中创建一个List类(类似于java列表的列表)。类节点也是通用的,我正在为上一个和下一个节点创建 getter 和 setters 方法。我想知道如何返回像类节点本身这样的类型?这是我的进步: 我试过 但它给了我错误

  • 问题内容: 在Java中,协方差允许API设计人员指定实例可以概括为某种类型或该类型的子类型中的任何一种。例如: 相反,则相反。它允许我们指定实例可以被概括为某种类型或超类型。 Java泛型的矛盾性如何有用?您何时选择使用它? 问题答案: 好吧,您的第二个示例将允许您编写: 而您无法使用第一种形式执行此操作。它不会像协方差那样有用,我将授予您。 在比较方面,它 可能 是有用的一个领域。例如,考虑:

  • 问题内容: 我正在使用GSON将JSON解码为T类型的对象,例如 但是,这将返回异常- java.lang.AssertionError:意外的类型。预期为以下之一:java.lang.reflect.ParameterizedType,java.lang.reflect.GenericArrayType,但得到:sun.reflect.generics.reflectiveObjects.Typ

  • 注意:“else”语句只是出于测试目的,似乎表明if语句没有正常工作,因为当我测试时,它总是被触发。