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

Rud*_*udi 1 java oop design-patterns

我需要使用两个不同的返回类型重载一个方法,并且在java中是不可能的,所以如果我有一个带有"Object"返回类型的超类,那么我是否有意义,然后我在两个不同的类中重写此方法?

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

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

class C extends A{
    @Override
    Double method()
    {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

或者有更好的方法吗?还是其他解决方案?

Sur*_*tta 5

如果我有一个带有"对象"返回类型的超类,那么它是否有意义,然后我在两个不同的类中重写此方法?

是.这就是Covariant return types从Java 1.5引入的原因.

在1.5之前,覆盖方法不能有不同的返回类型.这在1.5中放松了.子类方法的返回类型R2可能与超类方法的返回类型R1不同,但R2应该是R1的子类型.即,子类可以返回类型,可以是超类返回类型的子类型.