why does
public interface ArrayOfONEITEMInterface {
public List getONEITEM();
}
compile, bu
? is a wildcard and means any subclass of ONEITEMInterface including itself.
T is a specific implementation of ONEITEMInterface in this case.
Since ? is a wildcard, there is no relation between your ? in the class declaration and the ? in your method declaration hence it won't compile. Just List> getONEITEM(); will compile though.
The first scenario means the entire class can handle exactly one type of Bar per instance.
interface Foo {
List get();
}
The second scenario allows each instance to operate on any subtype of Bar
interface Foo {
List extends Bar> get()
}