簡體   English   中英

使用不同的返回類型實現重載

[英]Implement overload with differents return types

我需要重載具有兩個不同返回類型的方法,並且在Java中是不可能的,所以如果我有一個帶有“對象”返回類型的超類,然后在兩個不同的類中覆蓋此方法,是否有意義?

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

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

class C extends A{
    @Override
    Double method()
    {
    ...
    }
}

還是有更好的方法來做到這一點? 或僅僅是其他解決方案?

如果我有一個帶有“對象”返回類型的超類,那么我在兩個不同的類中重寫此方法是否有意義?

是。 這就是為什么Java 1.5引入了Covariant return types原因。

在1.5之前,覆蓋方法不能具有不同的返回類型。 在1.5中放松了。 子類方法的返回類型R2可能與超類方法的返回類型R1不同,但R2應該是R1的子類型。 即,子類可以返回類型可以是超類返回類型的子類型。

好吧,我要說的是,如果它們具有不同的返回類型而不是子類,那么您必須首先說服自己為什么要overriding 我認為這不是重寫的最佳用例。

您應該改為方法overloading 你不必不必要的替代overloading與覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM