Java covariance -
I am trying to find out. Say I have the following code:
class animal {} class mammal animal {} spreads in class giraffe spreads mammals {} ... public static list & lt;? Mammal & gt; Extends Millmills () {Return ...; } ... public static zero chief (string [] args) {list & lt; Mammal & gt; Mammals = matching mammals (); // compilation error}
Why is the result of the assignment in a compilation error? The error is something like this:
type does not match: can not be changed from the list & lt; Capture # 4-Why? Mammal & gt; For the expanded list & lt; Mammal & gt; According to my understanding of the sect, getMammals () method gives a list which is always mammals Objects should be assigned to me, what am I missing?
Because getMammals can return a list & lt; Giraffe & gt; , and if that list & lt; Mammal & gt; , you can add it to zebra adding zebra to a list of giraffe can not be allowed Is that what you can do?
in the category of class zebra mammals {} & lt; Giraffe & gt; Giraffe = new list & gt; Giraffe & gt; (); & Lt; Mammal & gt; Mammals = giraffes; // Not allowed mammals.ed (new zebra ()); // will add a zebra to the list of giraffe
Comments
Post a Comment