I have a method with List as a parameter.
private static void setData(List<IData> list) {
}
The interface IData is
public interface IData {
int getData();
}
And i have a class named Data which implements the interface of IData
public class Data implements IData{
@Override
public int getData() {
// TODO Auto-generated method stub
return 0;
}
}
The question is when I use the parameter of List to call method, it fails to compile.
public class Test {
public static void main(String[] args) {
List<Data> temp = new ArrayList<>();
for (int i = 0; i < 5; i++) {
temp.add(new Data());
}
setData(temp);
List<IData> temp2 = new ArrayList<>();
for (int i = 0; i < 5; i++) {
temp2.add(new Data());
}
setData(temp2);
}
private static void setData(List<IData> list) {
}
}
setData(temp) is error. setData(temp2) is ok. Both of the lists have same content. I don't understand.