Java 将泛型T强制转换为对象[]
是否可以将泛型强制转换为对象[]如果不可以,方法是什么Java 将泛型T强制转换为对象[],java,generics,Java,Generics,是否可以将泛型强制转换为对象[]如果不可以,方法是什么 public class OneClass<T extends Serializable> { public void someMethod() { T castObject = (T) value; //The method createArrayOf(String, Object[]) in the type Connection is not applicable for
public class OneClass<T extends Serializable> {
public void someMethod()
{
T castObject = (T) value;
//The method createArrayOf(String, Object[]) in the type Connection is not applicable for the arguments (String, T)
//So method signature is createArrayOf(String, Object[])
Array array = connection.createArrayOf("integer", castObject);
}
}
公共类OneClass{
公共方法()
{
T castObject=(T)值;
//类型连接中的方法createArrayOf(String,Object[])不适用于参数(String,T)
//所以方法签名是createArrayOf(字符串,对象[])
数组=connection.createArrayOf(“整数”,castObject);
}
}
但是我想用这个通用的作为下一个:
OneClass<Integer[]>
OneClass
或
OneClass
当然,这是可能的;说:
T whatever = ... coming from somewhere
Object[] castedObjects = (Object[]) whatever;
如果这是个好主意;这可能是一个完全不同的讨论。但为了进行讨论,我们必须看到更多的“背景”——你的要求是什么;该类课程的目的是什么;它应该如何处理这些对象数组
但你眼前的问题很容易解决;如上所示。您似乎误解了强制转换的语法。如果要强制转换到
对象[]
,请在更新时使用(对象[])
,而不是使用(T)
;我仍然认为我的答案解决了“铸造”问题。你的代码看起来仍然很奇怪;至少java.lang.Array只有静态方法;因此,实例化它绝对没有意义。但可能是其他数组类…@GhostCat,它是java.sql.Array
。请注意,强制转换不会进行任何类型的转换:这仅在泛型值实际上是对象[]
时才起作用。如果要求它是一个对象[]
,那么让它成为泛型没有多大意义。
T whatever = ... coming from somewhere
Object[] castedObjects = (Object[]) whatever;