gpt4 book ai didi

java - A 和 A< 有什么区别?延伸 B>?

转载 作者:太空狗 更新时间:2023-10-29 22:38:09 26 4
gpt4 key购买 nike

我是一名新的 Java 学习者。最近我正在阅读泛型编程并对此感到困惑......

A<T extends B> and A<? extends B>

最佳答案

首先,这些是在不同上下文中使用的完全不同的结构。

A<T extends B>是泛型类型声明的一部分,例如

public class A<T extends B> { ... }

它声明泛型类型 A带有类型参数 T , 并在 T 上引入一个界限,所以 T必须是 B 的子类型.


A<? extends B>是带通配符的参数化类型,可以作为普通类型用于变量和方法声明等:

A<? extends B> a = ...;

public void foo(A<? extends B> a) { ... }

变量声明如A<? extends B> a表示 a 的类型是A使用 B 的某些子类型进行参数化.

例如,给出这个声明

List<? extends Number> l;

你可以:

  • 分配 List Number 的某些子类型至 l :

    l = new ArrayList<Integer>(); 
  • 获取 Number 类型的对象从该列表中:

    Number n = l.get(0);

但是,您不能将任何内容放入列表 l因为您不知道列表的实际类型参数:

Double d = ...;
l.add(d); // Won't compile

关于java - A<T extends B> 和 A< 有什么区别?延伸 B>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com