协变返回类型是指:在导出类中的被覆盖方法可以返回基本方法的返回类型的某种到处类型:
是Java SE5中新添加的。看个例子就明白了
class Grain{
public String toString(){return "Grain";}
}
class Wheat extends Grain{
public String toString(){return "Wheat";}
}
class Mill{
Grain process(){return new Grain();}//return Grain
}
class WheatMill extends Mill{
Wheat process(){return new Wheat();}//return Wheat (extends Grain)
}
public class CovariantReturn {
public static void main(String[] args) {
Mill m = new Mill();
Grain g = m.process();
System.out.println(g);
m = new WheatMill();
g = m.process();
System.out.println(g);
}
}
Grain
Wheat
代码中Mill.process返回的Grain,它的导出类WheatMill返回的Wheat。Wheat有事Grain的导出类。
从输出结果来看这样是可行的。