Where is the difference between test1 and test2? Why compilation error in test1?
import java.util.ArrayList;
import java.util.Collection;
class MyType {
}
class MyClass<T> {
private Collection<MyType> myTypes = new ArrayList<MyType>();
private Collection<T> myTs = new ArrayList<T>();
public Collection<MyType> getMyTypes() {
return myTypes;
}
public Collection<T> getMyTs() {
return myTs;
}
}
public class TestSimple {
public void test1() {
MyClass myClass = new MyClass();
for (MyType myType : myClass.getMyTypes()) {
}
}
public void test2() {
MyClass myClass = new MyClass();
Collection<MyType> myTypes = myClass.getMyTypes();
for (MyType myType : myTypes) {
}
}
public void test3() {
MyClass<Long> myClass = new MyClass<Long>();
for (Long myType : myClass.getMyTs()) {
}
}
}