我想找到以下代碼中的錯誤,我故意擰的只是深入探索概念。需要幫助瞭解java的泛型概念
import java.util.ArrayList;
import java.util.Iterator;
class typeAnimal<String> implements Iterable<String> //// (1)
{
ArrayList<String> listAnimal = new ArrayList<String>();
typeAnimal(ArrayList<String> listAnimal)
{
this.listAnimal = listAnimal;
}
@Override
public Iterator<String> iterator()
{
return new Iterator<String>()
{
int position;
@Override
public boolean hasNext() {
if(position<listAnimal.size())
return true;
else
return false;
}
@Override
public String next()
{
String aniPos = listAnimal.get(position);
position ++;
return aniPos;
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
};
}
}
public class newIterator
{
public static void main(String[] args)
{
ArrayList<String> animalList = new ArrayList<String>();
animalList.add("priyank");
animalList.add("kannu");
typeAnimal<Object> animalName= new typeAnimal(animalList);
for(String name:animalName) //// <-- Error
{
System.out.println(name);
}
}
}
錯誤是Type mismatch: cannot convert from element type Object to String
。但是,如果我在更換typeAnimal<String>
(1)typeAnimal<Object>
錯誤就會消失。 我知道這是值得的代碼,但仍然想知道究竟是什麼導致錯誤。
謝謝艾蘭,但我仍然不清楚拋出的錯誤。爲什麼呢,如果我將(1)中的typeAnimal替換爲typeAnimal