gpt4 book ai didi

java - 用一种类型参数化的方法接受两种类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:16 25 4
gpt4 key购买 nike

可能我遗漏了一些东西,也许我的假设是错误的,但我认为当我声明类型为 T 的参数化方法时,无论该类型有多少变量,它仍然是相同的类型。但我看到这个编译并且它反对我的观点。

static <T> void f(T a, T b) { }

public static void main(String[] args) {
f(Integer.MIN_VALUE, "...");
}

因此,如果我的方法使用一种类型进行参数化,并且我在两个参数中使用该一种类型,为什么它允许我发送具有两种完全不同类型的两个对象?我猜这归结为将 T 视为 Object

最佳答案

尽管 Integer 和 String 是两种不同的类型,但它们仍然共享一个共同的父类(super class)型。 可序列化

为了验证这一点,让我们返回T

static <T> T f(T a, T b) {
return null;
}
Serializable s = f(Integer.MIN_VALUE, "..."); // compiles

编译器将解析(或推断,不确定技术术语)到最具体的类型。例如,

Number number = f(Integer.MAX_VALUE, BigDecimal.ONE); 

现在,解析的类型是Number,因为这两种类型都是Number的子类型,还有Serializable,还有当然是对象

关于java - 用一种类型参数化的方法接受两种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448090/

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