gpt4 book ai didi

Java:试验泛型

转载 作者:IT老高 更新时间:2023-10-28 21:14:57 24 4
gpt4 key购买 nike

最后我尝试了一些泛型。我想出了这段代码:

public class Test {

static <T> void f(T x) {
x = (T) (Integer) 1234;
System.out.println(x);
}

public static void main(String[] args) {
f("a");
f(1);
f('a');
f(1.5);
f(new LinkedList<String>());
f(new HashMap<String, String>());
}
}

我运行了这个并得到了这个输出:

1234
1234
1234
1234
1234
1234

没有异常(exception)!怎么可能?

最佳答案

因为type erasure (关于这个已经写了很多,只是谷歌这个词)。将 f 编译为字节码后,方法可能如下所示:

static void f(Object x) {
x = (Object) (Integer) 1234;
System.out.println(x);
}

所以 System.out.println 只会调用对象 x 上的 toString 方法 - 在你的情况下它是 Integer.toString() .

关于Java:试验泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18102660/

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