- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Here ,我想知道如何实现Collection#toArray(T[] array)
适本地。我最生气的是array.getClass().getComponentType()
类型为Class<?>
而不是Class<? extends T>
正如我所预料的。
因此,我编写了这三个函数:
@SuppressWarnings("unchecked") static <T> Class<? extends T> classOf(T obj) {
return (Class<? extends T>) obj.getClass();
}
@SuppressWarnings("unchecked") static <T> Class<? extends T> classOf(T[] array) {
return (Class<? extends T>) array.getClass().getComponentType();
}
@SuppressWarnings("unchecked") static <T> T[] newArray(Class<T> clazz, int size) {
return (T[]) Array.newInstance(clazz, size);
}
然后,我的toArray
实现如下:
public <T> T[] toArray(T[] array) {
int size = size();
if (array.length < size) {
array = newArray(classOf(array), size);
} else if (array.length > size) {
array[size] = null;
}
int i = 0;
for (E e : this) {
array[i] = classOf(array).cast(e);
i++;
}
return array;
}
我现在想知道的是:
这 3 个辅助函数总是安全的吗?特别是, Actor 阵容总是安全吗?
为什么 Java 中还没有这些函数?
另请参阅此非常相关的问题: T obj
for a generic type T
. The type of obj.getClass()
is Class<?>
and not Class<? extends T>
. Why?
最佳答案
您的代码看起来相当不错,但您可能会考虑使用 java.util.Arrays.copyOf
来简化您的生活。
关于Java:我的 classOf 和 newArray 怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011289/
我有这行代码: - (void)redrawGraphWithArray:(NSArray *)array { _graphView.graphPoints = [array copy];
在 Haskell FFI 中,用 withArray 分配的数组之间的本质区别是什么?和 newArray ?我在 c 中有与 newArray 一起使用的函数但与 withArray 的段错误.工
我正在实现 Parcelable 以便在整个 Intent 中传输一些简单数据。 但是,Parcelable 接口(interface)中有一种方法我完全不理解:newArray()。 它没有任何相关
我如何在 BCEL 中检查这一点.. 假设java中的字节码是 newarray 10 (int) 我已经为访客完成了此操作 instruction instanceof NEWARRAY publi
不太熟悉Python,需要翻译一些代码。这是我遇到问题的要点: import numpy myNumpyArray = numpy.array([1,2,3,4]) newArray = myNump
我有一个由许多小数组组成的 oldArray。现在我想获取这些对象之一(一个小数组),修改它,然后(如果用户点击一个按钮)替换它。为此: 第 1 步 - 我创建了一个新数组,其中我用那个小对象初始化了
Here ,我想知道如何实现Collection#toArray(T[] array)适本地。我最生气的是array.getClass().getComponentType()类型为Class而不是C
在对 java 中多维数组操作的复制进行一些搜索后,我发现了这个问题:copy a 2d array in java一个被否决的答案建议使用标题中的方法。所以我的问题是: 1) 为什么不好? (因为它
基本上,我想在 types 模块中使用 Array 类型结构,但我无法对其进行初始化。您必须将什么作为第一个参数传递给类型? package main import ( "fmt" "
为我的 collectionView 应用程序使用 Swift。我正在读取一个 plist 文件以显示数组中的信息。 这是读取 plist 的代码,它创建了一个名为 sections[section
环境jdk1.8 Spring 工具套件4 问题由于eclipse java问题,无法调试项目。 关键字codegen.TypeAnnotationCodeStream.newArray 详情 Pro
我是一名优秀的程序员,十分优秀!