Java 使用不同的返回类型实现重载

Java 使用不同的返回类型实现重载,java,oop,design-patterns,Java,Oop,Design Patterns,我需要用两种不同的返回类型重载一个方法,在java中是不可能的,所以如果我有一个具有“Object”返回类型的超类,这有意义吗 那么我在两个不同的类中重写这个方法 class A{ Object method() { ... } } class B extends A{ @Override Integer method() { ... } } class C extends A{ @Override Do

我需要用两种不同的返回类型重载一个方法,在java中是不可能的,所以如果我有一个具有“Object”返回类型的超类,这有意义吗 那么我在两个不同的类中重写这个方法

class A{
    Object method()
    {
    ...
    }
}

class B extends A{
    @Override
    Integer method()
    {
    ...
    }
}

class C extends A{
    @Override
    Double method()
    {
    ...
    }
}
还是有更好的方法?或者仅仅是其他解决方案

所以,如果我有一个返回类型为“Object”的超类,然后我在两个不同的类中重写这个方法,这有意义吗

class A{
    Object method()
    {
    ...
    }
}

class B extends A{
    @Override
    Integer method()
    {
    ...
    }
}

class C extends A{
    @Override
    Double method()
    {
    ...
    }
}
对。这就是从Java1.5引入的原因

在1.5之前,重写方法不能有不同的返回类型。这在1.5中有所放松。子类方法的返回类型R2可能不同于超类方法的返回类型R1,但R2应该是R1的子类型。i、 例如,子类可以返回类型可以是超类返回类型的子类型

所以,如果我有一个返回类型为“Object”的超类,然后我在两个不同的类中重写这个方法,这有意义吗

class A{
    Object method()
    {
    ...
    }
}

class B extends A{
    @Override
    Integer method()
    {
    ...
    }
}

class C extends A{
    @Override
    Double method()
    {
    ...
    }
}
对。这就是从Java1.5引入的原因

在1.5之前,重写方法不能有不同的返回类型。这在1.5中有所放松。子类方法的返回类型R2可能不同于超类方法的返回类型R1,但R2应该是R1的子类型。i、 例如,子类可以返回类型可以是超类返回类型的子类型


好吧,我想说,你必须首先说服自己,如果它们有不同的返回类型而不是子类,那么为什么要使用
重写
。我认为这不是重写的最佳用例


您应该选择方法
重载
。您不必用重写来替换不必要的
重载

好吧,我想说的是,如果它们有不同的返回类型而不是子类,那么您必须首先说服自己,为什么要使用
重写。我认为这不是重写的最佳用例


您应该选择方法
重载
。您不必用重写来替换不必要的
重载

不要重载并给方法一个不同的名称@RobinToper不一定在1.5之后。实际上,我会有一个列表,然后调用方法()并根据输入返回一个类型,例如,如果输入是一个长度大于2的字符串,则返回整数,否则返回双精度。返回
Number
而不是
Object
?什么“输入”?这听起来不像是一个覆盖用例,更像是一个重载或泛型用例…不要重载并给方法一个不同的名称@RobinToper不一定在1.5之后。实际上,我会有一个列表,然后调用方法()并根据输入返回一个类型,例如,如果输入是一个长度大于2的字符串,则返回整数,否则返回双精度。返回
Number
而不是
Object
?什么“输入”?这听起来不像是一个覆盖用例,更像是一个重载或泛型用例…哎哟。但我想我能看到…:-)如果没有一个很好的理由,我当然不会这么做。@t.J.Crowder哈哈。我能感觉到你。试着想一个真实世界的例子5分钟,但没有运气。在我的经验中,真实世界的使用非常普遍。我知道番石榴到处都在用。但我想我能看到…:-)如果没有一个很好的理由,我当然不会这么做。@t.J.Crowder哈哈。我能感觉到你。试着想一个真实世界的例子5分钟,但没有运气。在我的经验中,真实世界的使用非常普遍。我知道番石榴到处都用它。