gpt4 book ai didi

java - Java 中的 Varargs 和泛型

转载 作者:行者123 更新时间:2023-11-30 07:12:49 26 4
gpt4 key购买 nike

考虑以下场景:

<T> void function(T...args){
...code...
}

然后我使用 Integer[] 调用它。编译器如何假定 TInteger,而不是 Integer[]? (请注意,我很高兴是这种情况,但我仍然觉得歧义很奇怪)。

此外,如果我希望 TInteger[],我是否可以这样做(假设装箱/拆箱不存在)?

最佳答案

Java 编译器足够聪明,知道这一点,因为你给它一个 Integer[],你可能意味着 TInteger,而不是 Integer[]。我假设这是将 ... 定义为可变参数的 Java 语言规范的一部分。

如果你想指定 T 是什么,你可以使用以下语法:

Integer[] ary = { 1, 2, 3 };
myObj.function(ary); // T is Integer
myObj.<Integer>function(ary); // T is Integer
myObj.<Integer[]>function(ary); // T is Integer[]


<Integer>function(ary); // this is invalid; instead you could do...
this.<Integer>function(ary); // this if it's an instance method
MyClass.<Integer>function(ary); // or this if it's static

关于java - Java 中的 Varargs 和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010908/

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