以这种方式创建通用对象数组是否有任何缺点或性能问题?
QueryObjects instances[] = (QueryObjects<String,String,String>[]) new Object[10];
编辑:我什至在想我是否可以依靠这个:-
QueryObjects instances[] = new QueryObjects[10];
造成这种情况的主要原因是,我不想将通用修复为 <String,String,String>
因为有时它也可以像 <Integer,Integer,Integer>
对于数组的某些元素。所以我想把它作为运行时的选择。由于这主要用于应用程序的内部工作而不是任何客户端输入,也许我不应该面临错误输入的危险。
最佳答案
您的代码将生成 ClassCastException
在运行时。
您应该创建一个 QueryObjects[]
类型的数组并将其转换到 QueryObjects<String, String, String>[]
,或者将来,如果您需要创建变量类型的数组(例如 T[]
),请使用反射: How to create a generic array in Java?
关于java - 通用类型数组的可能方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5108882/