2017-12-18 140 views
0

爲了進行單元測試,我需要重寫下面的NESTED類中的deriveCalculatedData的定義。
是否有可能通過匿名類重寫實現它?
我將如何調用此後的非默認構造函數?覆蓋嵌套類成員

Class A{ 


    static class B{ 

    B(String a,String b){ ... } 
    int deriveCalculatedData(){....} 
    } 

    main(){ 

     int i = new A.B(x,y).deriveCalculatedData();//Override,and create instance 
    } 
} 
+1

爲什麼地球上,你將要覆蓋的緣故這種方法*測試*?當然,你會想把它當作一個黑匣子;它會返回一個值,您可以期待某些值得到某些輸入......除非您告訴我們的內容更多。 – Makoto

+0

是的,有可能 –

回答

0

是的,這是可能的。你只需要創建一個新的實現或嵌套class的擴展。

或者通過一個匿名類:

// pass arguments to constructor like normal 
B b = new A.B(str1, str2){ 
    @Override 
    int deriveCalculatedData(){ 
     // your stuff 
     return -1; 
    } 
}; 

或者通過一個全新的類文件,這樣你就可以重複使用它:

public class C extends A.B { 

    public C(String str1, String str2){ 
     // pass arguments to super constructor 
     super(str1, str2); 
    } 

    @Override 
    int deriveCalculatedData(){ 
     // your stuff 
     return -1; 
    } 
} 

// call it from somewhere with arguments 
C c = new C(str1, str2); 
+0

爲什麼downvote? – Lino