gpt4 book ai didi

Java:不同的泛型类型声明和实例

转载 作者:行者123 更新时间:2023-11-30 06:12:56 25 4
gpt4 key购买 nike

我发现在声明变量和分配实例时都必须使用通用形式。我想问的问题是这样的:变量和实例的类型是否可以不同?喜欢

List<Object> list = new ArrayList<Integer>();

最佳答案

首先,可以使用菱形运算符来推断右侧的类型:

List<Object> list = new ArrayList<>();

Is there any case the type of variable and instance can be different?

Java 中的泛型类型会在运行时被删除。这意味着实例没有泛型类型。该类型仅在编译时存在于变量上。

左侧和右侧的泛型类型不必完全相同,但是您必须使用通配符:

List<?> list = new ArrayList<Integer>();
List<? extends Number> list = new ArrayList<Integer>();

使用这些通配符,您仍然可以对对象执行的操作非常有限。例如,您只能 get一个Number出一个List<? extends Number> ,但你不能add一个新的Integer (因为据你所知,它可能是 List<Double>)。

如果您想编写可以接受某些接口(interface)类型列表的方法,这仍然很有用:

boolean areAllPositive(List<? extends Number> numbers) { ... }

关于Java:不同的泛型类型声明和实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49839329/

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