2014-02-07 83 views
0

如果我有一個名爲MyDate的自定義日期類型,其中我編寫了用於將double和MyDate隱式轉換爲對方的運算符。自定義日期類型到雙重類型轉換

我的問題:有沒有什麼辦法可以關閉某個特定方法參數的隱式轉換?這是一個好主意嗎?

例如

public class A { 
    ... 

    public void AMethod(double x, double y) { 

     // do something 
    } 
} 

我不amethod方法()的某人在特定情況下希望能夠調用它是這樣的:

A a = new A(); 
a.AMethod(m, n); // m and n are of type MyDate 
+0

您希望他們怎麼稱呼它?你如何使用它? –

+0

你爲什麼要關閉它?我想你可能會問錯誤的問題。 – dcastro

+0

@AndreiV只有當m和n是雙倍時。 – jambodev

回答

3

我不認爲這是可以關閉隱只對選定的方法進行轉換,無論您是全部還是全部完成。儘管如此,只有在進行轉換時不會丟失任何內容的情況下才能實現隱式轉換,例如,你不應該關心轉換是否發生。如果情況並非如此(或者至少在一個方向上不是這種情況),那麼將隱式轉換更改爲顯式,然後將問題更改爲消失。當然你的代碼在所有這些轉換中都會更加明確,但是也是如此。

2

這不是一個好主意。 當您創建自定義隱式轉換時,應該以適用於所有可能場景的方式實現它。 在某些情況下將其關閉的可能性會使代碼更難以閱讀並可能引入錯誤。

如果你想有可能打開和關閉轉換,你應該簡單地實現顯式轉換(然後你可以在需要時應用)。