繁体   English   中英

覆盖嵌套的类成员

[英]Overriding nested class member

为了进行单元测试,我将需要覆盖下面的NESTED类中的generateCalculatedData的定义。
是否可以通过匿名类重写来实现?
此后我将如何调用非默认构造函数?

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
   } 
}

是的,有可能。 您只需要为该嵌套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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM