我想在Java中创建一个通用数组,以维护Java通常提供的类型安全。
我正在使用此代码:
class Stack<T> {
private T[] array = null;
public Stack(Class<T> tClass, int size) {
maximumSize = size;
// type unsafe
//array = (T[])new Object[maximumSize];
this.array = (T[])java.lang.reflect.Array.newInstance(tClass,maximumSize);
}
此代码类型安全吗?如果是这样,为什么?为什么它是类型安全的,我需要强制转换?
该Array.newInstance(..)
方法的返回类型为Object
。因此,您不能将其直接分配给以外的任何其他对象Object
。因此,您需要演员表。
该方法委托给一个native
方法
创建具有指定组件类型和长度的新数组
因此,它正在创建一个type数组T
。
类型安全性,假设array
声明为
T[] array;
,由Class<T>
参数和使用相同类型变量的类型转换来保证。
您应该添加
@SuppressWarnings("unchecked")
在源代码中带有解释上述原因的注释。总是评论为什么您要取消警告的演员是安全的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句