gpt4 book ai didi

java - 是否可以将对象类型信息传递给泛型方法

转载 作者:行者123 更新时间:2023-12-02 02:11:22 27 4
gpt4 key购买 nike

我对泛型类型等概念有点陌生。但问题很简单,我想编写一种方法,它将两个相同类型的数组作为参数并返回一个相同类型的单个数组。但是,该类型可以是我定义的任何类。

我尝试使用通用的 java Object 类,但后来我无法将其转换回我的类型。有没有办法将类型信息传递给函数,以便函数知道它必须返回哪种类型?

String[] a = {"sfsdf", "dwedwe"};
String[] b = {"anda", "vuela"};

String[] result = (String[]) addArrays(a, b); >> error type mismatch

Object[] addArrays(Object[] o1, Object[] o2){
Object[] result = new Object[o1.length + o2.length];

for(int i=0;i<o1.length;i++){
result[i] = o1[i];
}

for(int i=o1.length;i<result.length;i++){
result[i] = o2[i-o1.length];
}

return result;
}

最佳答案

最好避免混合数组和泛型。如果您必须使用数组,这应该可行:

<T> T[] addArrays(T[] o1, T[] o2) {
T[] result = Arrays.copyOf(o1, o1.length + o2.length);
System.arraycopy(o2, 0, result, o1.length, o2.length);
return result;
}

请注意,返回的数组类型与o1相同。

关于java - 是否可以将对象类型信息传递给泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49988869/

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