2017-12-18 138 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