Java 自动装箱/取消装箱不适用于退货类型?

Java 自动装箱/取消装箱不适用于退货类型?,java,Java,请看下面的代码 public class Parent { public Object doSomething() { return null; } } class Child extends Parent { public Integer doSomething() { return 0; } } 它在协方差下是完美的,并且编译得很好 何处为 public class Parent { public Integer d

请看下面的代码

public class Parent {
    public Object doSomething() {
        return null;
    }
}

class Child extends Parent {
    public Integer doSomething() {
        return 0;
    }
}
它在协方差下是完美的,并且编译得很好

何处为

public class Parent {
    public Integer doSomething() {
        return null;
    }
}

class Child extends Parent {
    public int doSomething() {
        return 0;
    }
}

没有编译。但它可以很容易地在自动装箱和取消装箱的情况下进行自我转换,对吗

在第一种情况下,代码编译是因为java支持协方差,这意味着

如果Cat是动物的亚型,则可以在任何可能的情况下使用Cat型表达式

根据这一点,第一种情况是好的

至于第二个案件,

是Java编译器在原语类型与其对应的对象包装器类之间进行的自动转换。例如,将int转换为整数,将double转换为double,等等

它是包装器与其原语之间的直接关系,这并不意味着
int
Integer
的子类

int ---> Integer  //conversion, not subtype

有点类似:@RahulTripathi-Hmm。。我被我先前回答的问题所启发:)。已尝试删除,但我无法删除。将其标记为重复:)