我有一个方法签名,类似于
public <T extends SomeClass> T[] findAll(Class<T> oClass, String condition)
但我不确定如何从Class 创建那个T []类型。 我尝试使用Collection ,但我无法将(T [])collection.toArray()和Array.newInstance(Class ,int)转换。Array.newInstance(Class ,int)要求一个数组类(即T []),这是无用的和冗余的。
另外,显然,new T [n]不起作用。
我会认为这很容易,但现在我对解决方案麻木了 :)
谢谢。
List
这样的Collection
就可以了,但由于我不希望返回的值是可修改的,所以我更喜欢使用数组而不是Collections.unmodifiableList()
。 - Yanick RochonCollections.unmodifiableList()
更好地保持了你的集合不可修改。 - Mark Petersadd
和remove
方法;你不能在数组中添加或删除项目。替换值并不重要,但我明白了。 - Yanick RochonArrays.asList(array)
将其转换为固定长度列表。因此,您可以使用一个空的 Object[],将其包装成一个列表,将列表强制转换为正确的泛型类型,然后填充它(或先填充再生成列表)。这需要一些 SuppressWarning,但是如果数组在您的方法中保持不变,则应该是安全的。 - Paŭlo Ebermann