2015-02-10 90 views
0

我有代碼,我打電話在類內實施的方法,即cmpreValue(詮釋實際,詮釋虛擬);如何處理繼承,如果一個子類已經擴展與基類

public class TestCompare extends TestBaseClass { 
    private static final Logger logger = Logger.getLogger(TestCompare.class.getName()); 
    String virtual= null; 
    String real= null; 
    XLSParser objVal ; 

    public void testSomeThing() { 
     // Returns some string value 
     real= objVal.getSomeStringValue(); 
     virtual= getExpectedValue();  
     cmpreValue(virtual, real);   
    } 

    void cmpreValue(String virtual, String real) 
    { 
     if(real.equals(virtual)) 
     { 
      logger.info(real); 
     } 
     else{ 
      logger.info(virtual); 
     } 
    } 

這裏,cmpreValue(String virtual, String real)使用一次,但我想在我的其他類使用此功能爲好。所以,我想我做了另一類即

public class Helpervalidate{ 
    void cmpreValue(String virtual, String real) 
    { 
     if(real.equals(virtual)) 
     { 
      // Not Visible objVal 
      logger.info(**objVal**.something()); 
     } 
     else{ 
      logger.info(virtual); 
     } 
    } 

,並在我的TestCompare類創建Helpervalidate類的一個對象,並調用TestCompare類功能cmpreValue但後來我得到錯誤objVal在Helpervalidate類是不明確的。

由於我的類TestCompare已經擴展了TestBaseClass,所以我不能去另一個類的擴展。 那麼如何讓我的函數cmpreValue(字符串虛擬,字符串真實)可重用到其他類? 有什麼辦法,我簡單地添加funtion cmpreValue(字符串虛擬,字符串真實),並傳遞值,它工作正常?

+0

你可以添加屬性到'Helpervalidate'類嗎?然後我可以幫忙。 – 2015-02-10 16:03:52

+0

爲什麼你在一個版本的方法中使用'logger.info(real)'而在另一個版本中使用'logger.info(objVal.something())'?什麼意義? – PDStat 2015-02-10 16:18:42

+0

@AnindaBhattacharyya:是的,我可以添加...請幫助。 – 2015-02-11 12:04:37

回答

0

你應該在你的Helpervalidate.cmpreValue方法中傳遞你需要的所有參數。即將方法簽名更改爲:

void cmpreValue(String virtual, String real, XLSParser objVal) 
+0

感謝您的回覆。我只能在函數中傳遞兩個參數,即只有實數和虛數。這就像代碼凍結對我來說,我無法對參數進行更改。 – 2015-02-10 15:58:57

+0

你有例外嗎?如果是這樣,它是什麼? – bhspencer 2015-02-10 16:00:49

+0

其編譯時間錯誤。 – 2015-02-11 12:07:38

0

如何僅使用幫助程序進行比較,並在類內進行所有日誌記錄?

如果您有名爲「cmpreValue」的方法,那麼使其執行任何其他操作都是不正確的。

0

一般:將信息傳遞給類,你必須要麼

  • 商店參考objVal內部類,並提供構造函數值/ setter方法

    public class Helpervalidate{ 
        XLSParser objVal ; 
        void cmpreValue(String virtual, String real){ 
         //do stuff  
        } 
    } 
    
  • 其注入方法

    public class Helpervalidate{ 
        void cmpreValue(String virtual, String real, XLSParser objVal){ 
         //do stuff  
        } 
    } 
    
0

在你的助手中添加屬性objVal。生成getter和setter。在實例化助手類時設置來自調用者的值。

HelperValidate validate 
= new HelperValidate(); 
validate.setObjVal(); 

然後在您的方法中使用this this.objVal。

希望這會有所幫助。

相關問題