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

泛型转换问题

姚智
2023-03-14
问题内容

这是我的问题:鉴于这些课程

class A {}
class B extends A {}

此代码编译:

    List<Class<? extends A>> list = Arrays.asList(B.class, A.class);

并且这不:

    List<Class<? extends A>> anotherList = Arrays.asList(B.class);

是什么赋予了?

更新: 此代码可在Java 8中编译。显然是由于“改进的类型推断”。


问题答案:

在第一个示例中,Arrays.asList()调用的推断类型为List<Class<? extends A>>,显然可以将其分配给相同类型的变量。

在第二个示例中,右侧的类型为List<Class<B>>。虽然Class<B> 分配给Class<? extends A>List<Class<B>> 分配给List<Class<? extends A>>。它可以分配给List<? extends Class<? extends A>>

其原因与a List<B>不可分配给的原因相同List<A>。如果是这样,它将使以下(非类型安全的)代码成为可能:

List<Class<B>> bb = new ArrayList<B>();
List<Class<? extends A>> aa = bb;
aa.add(A.class);


 类似资料:
  • 问题内容: 我正在编写一些Swift代码,其中有一个包含通用类型的数组: 稍后在我的代码中,我需要确定存储在数组中的类型。我尝试使用文档中描述的类型转换技术(尽管泛型没有使用过)。 上面的switch语句在编译时导致以下错误: 发出IR SIL功能@ _TFC19Adder_Example Mac6Matrix9transposeUS 7ElementfGS0_Q__FT_GSqGS0_Q___以

  • 本文向大家介绍C# 泛型参数转换,包括了C# 泛型参数转换的使用技巧和注意事项,需要的朋友参考一下 泛型不同参数类型生成的对象是相互独立的。 很多时候,我们希望实现 to = ts 这种操作,为什么?因为看上去它应该如此。 为了达到这个目的,就要解决“泛型参数转换的问题”,这个问题的知识点是in out 泛型变体。老实说,这个问题本身不困难,只是非常不直观,很容易让人忘记。 首先一点,为了实现to

  • 我在我的一个实用程序类中有一个方法,它接受一个集合和一个类对象,并返回一个Iterable实例,该实例可以遍历作为指定类实例的集合的所有成员。其签名为: 这对于大多数用例都非常有效,但现在我需要将其与泛型类

  • 问题内容: 我有一堂课 具有通用属性 有更好的方法来执行以下操作吗? 即以不同的形式返回泛型? 精度,我使用Gson作为反序列化器,以获取列表,然后每个Data对象都可以是异构的 。还可以注册适配器以进行浮点和长检测,但不会更快或更漂亮 编辑 :gson无法检索多头: 要么: java.lang.Double无法转换为java.lang.Long 要么 java.lang.NumberFormat

  • 我有一个类<代码>数据 具有泛型属性 有没有更好的方法来做以下事情? 即以不同的形式返回泛型类型? Precision,我使用Gson作为反序列化器,以获得一个列表,每个数据对象可以是异构的< br >也可以注册适配器进行浮点和长整型检测,但它不会更快或更好 编辑:gson无法检索longs: 或者: java.lang.Double不能java.lang.Long 或 java.lang.Num

  • 我正试图解决一个泛型问题。我在做一些手工选角,感觉好像我做错了什么。我对使用泛型有点陌生,所以很有可能我在某些方面误用了它们。如能提供指导,将不胜感激。 TLDR: 我有一个带有泛型方法的接口,该泛型方法采用参数。我在一个类中实现了这个接口,但在实现器中,我希望确保是特定类型的(假设,这样我就可以提取一些字段)。我怎么能那样做? 详细信息: 下面有一个接口和一个实现类,其中。 具有以下定义: 而具