Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何构造参数化类型的数组?_Java_Arrays_Types_Constructor - Fatal编程技术网

Java 如何构造参数化类型的数组?

Java 如何构造参数化类型的数组?,java,arrays,types,constructor,Java,Arrays,Types,Constructor,我将在这里直接讨论这个问题。 这是我目前采用的方法: public T[] getAllValues() { Serializable[] result = new Serializable[sets.size()]; for (int i = 0; i < sets.size(); i++) { result[i] = sets.get(i).getValue(); } return (T[]) result; } 当类型被参数化时

我将在这里直接讨论这个问题。 这是我目前采用的方法:

public T[] getAllValues() {
    Serializable[] result = new Serializable[sets.size()];
    for (int i = 0; i < sets.size(); i++) {
        result[i] = sets.get(i).getValue();
    }   
    return (T[]) result;
}
当类型被参数化时,显然不可能构造。为什么呢? 更重要的是:我如何解决这个问题

先谢谢你

编辑:我解决了这个问题,这就是我想到的:

public T[] getAllValues(T[] typearray) {
    for (int i = 0; (i < typearray.length) && (i < sets.size()); i++) {
        typearray[i] = sets.get(i).getValue();
    }
    return typearray;
}
public T[]getAllValues(T[]typearray){
对于(inti=0;(i
通常应该避免使用数组,在这种情况下它根本不起作用

使用
List
(或
Set
)而不是数组可以解决所有问题

旁注:

我不确定您在做什么,但似乎您可以使用一个
映射,而不是一个
集合
,其中包含一个对的列表
(String,T)
。您不需要方法
getAllValue()
,因为
map.values()
返回所有
T
Collections

您应该避免一般使用数组,在这种情况下它根本不起作用

使用
List
(或
Set
)而不是数组可以解决所有问题

旁注:

我不确定您在做什么,但似乎您可以使用一个
映射,而不是一个
集合
,其中包含一个对的列表
(String,T)
。您不需要方法
getAllValue()
,因为
map.values()
返回所有
T
集合。

简而言之:不可能创建泛型数组。请在编辑中查看@Tom关于您的解决方案:您应该避免使用输入参数作为输出。对于其他开发人员,或者对于未来的您来说,这是相当混乱的。返回相同的数组也增加了混淆。@toto2当然,我理解你的意思,但让我继续使用此解决方案的原因是,除了我没有任何其他想法之外,这是我正在制作的API中的一个次要方法,它只会被更熟练的开发人员使用,谁可能理解我的文档。不过谢谢你的想法。简言之:不可能创建通用数组。请在编辑中查看@Tom关于您的解决方案:您应该避免使用输入参数作为输出。对于其他开发人员,或者对于未来的您来说,这是相当混乱的。返回相同的数组也增加了混淆。@toto2当然,我理解你的意思,但让我继续使用此解决方案的原因是,除了我没有任何其他想法之外,这是我正在制作的API中的一个次要方法,它只会被更熟练的开发人员使用,谁可能理解我的文档。谢谢你的想法。我解决了这个问题,我使用了一个数组。我解决了这个问题,我使用了一个数组。
new T[int];
public T[] getAllValues(T[] typearray) {
    for (int i = 0; (i < typearray.length) && (i < sets.size()); i++) {
        typearray[i] = sets.get(i).getValue();
    }
    return typearray;
}