Java中泛型集合的迭代

Java中泛型集合的迭代,java,loops,generics,Java,Loops,Generics,我对Java非常陌生,很难理解泛型、泛型的使用方法以及泛型的语法 我上过下面的课 class MyCustomArray<T>{ private T[] myArray; // Default Constructor public ArraySet(){ this.myArray= (T[]) new Object[10]; } // Method to get array length public int ge

我对Java非常陌生,很难理解泛型、泛型的使用方法以及泛型的语法

我上过下面的课

class MyCustomArray<T>{

    private T[] myArray;

    // Default Constructor
    public ArraySet(){
        this.myArray= (T[]) new Object[10];
    }

    // Method to get array length
    public int getSize(){
        return this.myArray.length;
    }

    ... some random code

    // Method to iterate
    public void iterateSomehow(MyCustomArray<? extends T> collection){

        // doesn't work
        for(T obj: collection){...}

        // doesn't work
        for(int i=0; i< collection.size(); i++){
            T nextObj= collection[i];
        }

    }
}

您不能直接遍历集合(因为它只是对象),您应该访问myArray。您还可以实现Iterable接口,它允许您这样做

  for(T obj: collection){...}

只有数组可以使用
[]
语法进行索引,并且只有实现
Iterable
的数组或类可以在增强型for循环的右侧使用(
for(T xxx:yyy)
)。您的类不是数组,并且没有实现
Iterable
,因此您的两次尝试都不起作用

您的类包含一个数组-
myArray
。你只需要重复一遍就可以了。这两个都很好:

for(T obj: collection.myArray){...}
// or
for(int i=0; i< collection.getSize(); i++){
    T nextObj= collection.myArray[i];
}

(T obj:collection.myArray){…}?@Sweeper-Wow的
呢。这正是我想做的。@Shevtsov我的代码有一个输入错误:
(R[])
应该是
(T[])
。我往这边走行吗?哦,对不起。我错了,你可以这样做(用T)。这是一个自定义通用列表的示例(项目在代码中类似于T)@Shevtsov不用担心,输入错误是我的错!谢谢你的链接。
for(T obj: collection.myArray){...}
// or
for(int i=0; i< collection.getSize(); i++){
    T nextObj= collection.myArray[i];
}
for(T obj: myArray){...}

for(int i=0; i< getSize(); i++){
    T nextObj= myArray[i];
}