为什么我在这一行中得到一个编译错误String s = data.get(idx);Java泛型列表编译错误
更新:我得到类型不匹配:不能给E转换为字符串
public class Parent<E> {
ArrayList<E> data=new ArrayList<E>();
public void add(E d){
data.add(d);
}
public List<E> getData(){
return data;
}
}
public class Child<E> extends Parent<E>{
public void appendData(E newItem){
super.add(newItem);
}
public void displayData(int idx){
List<E> data=this.getData();
**String s=data.get(idx);**//I get compilation error in this line
System.out.println(s);
}
public static void main(String[] args) {
Child<String> c=new Child<String>();
c.appendData("Data1");
c.appendData("Data2");
c.displayData(1);
}
}
解决方案更新的类:
public class Child<S> extends Parent<String>{
public void appendData(String newItem){
super.add(newItem);
}
public void displayData(int idx){
List<String> data=this.getData();
String s=data.get(idx);
System.out.println(s);
}
public static void main(String[] args) {
Child c=new Child();
c.appendData("Data1");
c.appendData("Data2");
c.displayData(1);
}
}
你得到的错误是什么?我假设你想''toString()'这里'data.get(idx);'。 –
您必须像这样投射:String s =(String)data.get(idx)否则您必须使用列表而不是列表数据 –
Amith
泛型负责类型转换的权利? – james007