因此,我正在尝试创建一个适用于 Java 中任何类型的参数化类型,这包括任何作为对象的东西,以及原始类型。我该怎么做呢?
好的,假设我希望 for-each 的目标是原始的,所以它
for(int i : MyClass)
类似的东西。这可能吗?
因此,我正在尝试创建一个适用于 Java 中任何类型的参数化类型,这包括任何作为对象的东西,以及原始类型。我该怎么做呢?
好的,假设我希望 for-each 的目标是原始的,所以它
for(int i : MyClass)
类似的东西。这可能吗?
根据您对 Bozho 的回答的评论,您可能想要这样的东西:
interface MyInterface<T> extends Iterable<T> {
}
不,你不能对原始类型这样做。您可以模拟原始类型的迭代器,但它永远不会真正是可迭代的,就像在 for-each 循环中一样。
我可能遗漏了一些东西,但你为什么不直接实施Iterable<T>
呢?
public MyClass<E>
它不包括原始类型,即您不能声明MyClass<int> myobj;
,但您可以使用包装器(java.lang.Integer
等)
对于原始类型,你不能做这种有用的事情。如果你“幸运”,你会得到邪恶的自动装箱,如果你不走运,你可能会收到编译器的抗议。如果您查看 GNU Trove 或 Apache Commons Primitives,您会看到平行宇宙源于对原始类型执行等效的集合框架的愿望。
我想如果你确定自动装箱的开销是你可以接受的,那可能是有道理的,但我无法克服我觉得它令人反感的倾向。
这应该可行,但我怀疑这不是你真正想要的......
final List< Integer> list;
...
for(final int i : list)
{
}