gpt4 book ai didi

Java 泛型类型与数组

转载 作者:行者123 更新时间:2023-12-01 08:13:28 27 4
gpt4 key购买 nike

我无法正确编写通用方法:

private int [] loadIntArray(String key, int [] defaultArray) {
int [] array = new int [4];
for( int index=0; index<4 ; index++) {
array[index] = sp.getInt(key + index, defaultArray[index]);
}
return array;
}

我写的是:

private <T[]> loadArray(String key, <T[]> defaultArray) {
<T[]> array = new <T[LEVELS]>;
for( int index=0; index<4 ; index++) {
array[index] = sp.getInt(key + index, defaultArray[index]);
}
return array;
}

但它无法编译。
我收到几个错误,“方法的返回类型丢失”,“私有(private) token 后的预期类型”。

正确的写法是什么?

最佳答案

为了实现这一点,您必须添加 class parameter到你的方法

Class<T> type

您的方法现在如下所示

 private <T> T[] loadArray(Class<T> type, String key, T[] defaultArray) {
T[] array = (T[]) Array.newInstance(type, defaultArray.length);
for (int index = 0; index < array.length; index++) {
array[index] = sp.getInt(key + index, defaultArray[index]);
}
return array;
}

问题后更新:
调用此方法会是什么样子? (例如类型“int”)?

创建 Pair 对象时,不能用原始类型替换类型参数 K 或 V:

Pair<int, char> p = new Pair<>(8, 'a');//编译时错误您只能用非基本类型替换类型参数 K 和 V:

Pair<Integer, Character> p = new Pair<>(8, 'a');

可能的解决方法
(以通用方式传递它并将其保留为原始数组的唯一方法是作为对象。)

Object a[]= {1,2,3};
loadArray(Object.class, "test", a);

或者您可以使用非原始类型(整数)

Integer a[]= {1,2,3};
loadArray(Integer.class, "test", a);

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

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