我最近遇到了這個問題,我的MorseString
類。我有兩個不同的構造函數做不同的事情,而是採取了相同的數據類型:兩個構造函數做不同的事情,但採取相同的數據類型
/*
* Constructor that takes the Morse Code as a String as a parameter
*/
public MorseString(String s) {
if(!isValidMorse(s)) {
throw new IllegalArgumentException("s is not a valid Morse Code");
}
// ...
}
和
/*
* Constructor that takes the String as a parameter and converts it to Morse Code
*/
public MorseString(String s) {
// ...
}
我想出了這個解決方案:
public MorseString(String s, ParameterType type) {
if(type == ParameterType.CODE) {
if(!isValidMorse(s)) {
throw new IllegalArgumentException("s is not a valid Morse Code");
}
// Constructor that takes Morse
} else {
// Constructor that takes String
}
}
但它看起來醜陋。其他解決方案?
使用函數代替構造函數。 –
它確實很醜,但有2個方法/構造函數具有相同的簽名是不可能的。 – Gumbo
這個問題似乎是無關緊要的,因爲它涉及代碼審查。它會更適合[codereview](codereview.stackexchange.com)。 –