2014-03-27 20 views
0

舉例來說,我有一個構造函數:如何爲構造函數(java)中的參數指定最小值?

public Employee(int age, String name){ } 

哪個命令我應該的,因爲它不允許創建隨着年齡的參數,小於21僱員對象的構造寫?

我不允許使用例外。

謝謝

+0

你應該告訴我們什麼構造函數應該在情況下調用構造函數 –

+0

有檢查我不允許使用例外情況,我很抱歉,我沒有提到這一點。 – Infested

回答

4

寫這樣的事情:

public Employee(int age, String name) { 
    if (age < 21) throw new IllegalArgumentException(
     "expected age to be greater than or equal to 21, but was " + age); 
} 
+0

之前做參數小於21 – Bravo

+0

@ user3371414儘管這是正確的方法...您有什麼建議嗎? – assylias

+0

@ user3371414有沒有其他的方式來避免創建對象 – JohnnyAW

1

我會用一個靜態工廠方法,使構造私有。 然後在該方法中,我將控制這些值來創建實例或不。

public static Employee getInstance(int age, String name) 
{ 
    if(age >= 21) 
     return new Employee(age, name); 
    return null; 
} 
+0

真的有必要嗎?! – assylias

+0

@assylias沒有必要,但它是一種選擇。 – Juvanis

+0

我會這樣做。我猜想它更靈活。 – sernle

0

你可以爲這個條件

class AgeException extends Exception 
{ 

     public AgeExceptionException() {} 


} 


try 
{ 
    if(age< 21) 
    { 
      throw new AgeExceptionException(); 
    } 
} 
catch(AgeExceptionException ex) 
{ 

} 
0

創建自定義異常,如果你真的想執行這一不明確拋出一個錯誤,你可以使用一個斷言。

public Employee(int age, String name){ 
    // Age higher than 21? 
    assert(age > 21); 

    /* Code */ 
} 

您必須啓用斷言,但使用-ea作爲構建選項,否則它們不起作用。

3
public class Employee { 

    private Employee(int age, String name) throws Exception { 
    //Your code 
    } 

    public static Employee getInstance(int age, String name){ 
     if(age >= 21){ 
     return new Employee(age,name); 
     } 
     else{ 
      return null; 
     } 
    }  

} 

//現在創建的對象調用的getInstance()

+1

我的重複。 – Juvanis

+1

@Juvanis構造函數必須是私人的 – Ajit

+0

你是個玩笑嗎?仔細閱讀我的答案! – Juvanis

相關問題