Giu*_*Pes 4 java arrays generics
我想在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);
}
Run Code Online (Sandbox Code Playgroud)
这个代码类型安全吗?如果是这样,为什么?为什么如果它是类型安全我需要演员?
该Array.newInstance(..)方法的返回类型为Object.因此,您无法直接将其分配给除此之外的任何内容Object.因此你需要一个演员.
该方法委托给一个native方法
创建具有指定组件类型和长度的新数组
因此它正在创建一个类型的数组T.
类型安全,假设array声明为
T[] array;
Run Code Online (Sandbox Code Playgroud)
,由Class<T>参数和使用相同类型变量的强制转换保证.
你应该添加
@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)
在您的源代码中解释上述原因的评论.始终评论为什么正在压制警告的演员是安全的.
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |