You are viewing a single comment's thread. Return to all comments →
I managed to solve without using covariant return. I suggest adding another test-case using covariant attribution.
class Flower { String whatsYourName() { String clazz = getClass().getSimpleName(); if (clazz.equals("Flower")) return "I have many names and types."; return clazz; } } class Jasmine extends Flower {} //@Override String whatsYourName() {return "Jasmine";} class Lily extends Flower {} //@Override String whatsYourName() {return "Lily"; } class Lotus extends Flower {} //@Override String whatsYourName() {return "Lotus"; } class State { Flower yourNationalFlower() { String clazz = getClass().getSimpleName(); switch(clazz) { case "WestBengal": return new Jasmine(); case "Karnataka": return new Lotus(); case "AndhraPradesh": return new Lily(); } return new Flower(); } } class WestBengal extends State {} //@Override Jasmine yourNationalFlower() {return new Jasmine();} class Karnataka extends State {} //@Override Lotus yourNationalFlower() {return new Lotus(); } class AndhraPradesh extends State {} //@Override Lily yourNationalFlower() {return new Lily(); } // Checking for co-variant return... /**/ class CheckCovariant {{ Flower flower = new State() .yourNationalFlower(); Jasmine jasmine = new WestBengal() .yourNationalFlower(); Lotus lotus = new Karnataka() .yourNationalFlower(); Lily lily = new AndhraPradesh().yourNationalFlower(); }} /**/
Seems like cookies are disabled on this browser, please enable them to open this website
Covariant Return Types
You are viewing a single comment's thread. Return to all comments →
I managed to solve without using covariant return. I suggest adding another test-case using covariant attribution.