2010-03-11 97 views
0

你能告訴我這條線是如何工作的....我的OperatorFactory.get(「add」)沒有做任何事情。我沒有收到任何印刷java接口...快速問題

ArithmeticOperator add = OperatorFactory.get ("add"); 

時,我有以下幾點:

interface ArithmeticOperator { 

    // Returns the result of applying the operator to operands a and b. 
    double operate (double a, double b); 

    // Return a String that is the name of this operator. 
    String printName(); 
} 


public class OperatorFactory implements ArithmeticOperator { 



    public OperatorFactory(){ 

    } 

    public static ArithmeticOperator get(String name){ 
     if(name.equals("add")) 
       return new PlusOperator(); 
     else if(name.equals("sub")) 
       return new SubOperator(); 
     else if(name.equals("mult")) 
       return new MultOperator(); 
     else if(name.equals("div")) 
       return new DivOperator(); 
     else 
      return null; 
    } 

    public double operate(double a, double b) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

    public String printName() { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

} 

public class PlusOperator extends OperatorFactory { 



    public double operate(double a, double b) { 
     return a + b; 

    } 

    public String printName() { 
     return "Add"; 
    } 

} 




public class PlusOperator extends OperatorFactory { 



    public double operate(double a, double b) { 
     return a + b; 

    } 

    public String printName() { 
     return "Add"; 
    } 

} 
+0

你爲什麼要印一些東西?你只是建立它,而不是調用它的** printName()**方法.. – Jack 2010-03-11 14:58:52

+0

「我沒有得到任何印刷品」。那麼,代碼不會在任何地方做到這一點。你在哪裏/如何印刷一些東西? – BalusC 2010-03-11 14:58:55

+0

「我沒有得到任何印刷品」 - 你在哪裏打印什麼?我沒有看到你的代碼在這裏 – 2010-03-11 14:59:04

回答

3

你永遠不會調用add.printName(),你當然不輸出任何東西,所以我米並不感到驚訝,沒有什麼正在打印。

0

不像你的get()方法調用printName(),所以它不應該打印任何東西。

2

你真的嘗試過打印名字嗎?

ArithmeticOperator add = OperatorFactory.get ("add"); 
System.out.println(add.printName()); 

此外,PlusOperator應該直接實現ArithmeticOperator。工廠不應執行ArithmeticOperator。這使您可以從工廠類中刪除操作和printName方法。

0

如果您想輸出操作員姓名,則應該致電add.printName()

0

我不會重複其他人已經說過的話 - 相反,如果您遇到此問題,以後有幾件事可以嘗試。

一個良好的第一完整性檢查這個問題是在代碼覆蓋工具(我用EclEmma在Eclipse - 我敢肯定有其他優秀的在那裏)運行代碼。這會告訴你沒有任何東西被打印,因爲printName()方法沒有被調用。

另一種方式在Eclipse中調試,這是通過右鍵點擊視頻源,選擇「引用>項目。」這將顯示您從printName()方法被調用這裏,你會看到,它不會被調用,因爲它沒有從任何地方引用。