【发布时间】:2015-11-29 20:02:19
【问题描述】:
我想在 JUnit 测试用例中创建一个对象 KalkulatorI.AccumulatorI。当我创建 Kalkulator.Accumulator 时,没关系 (Kalkulator.Accumulator t2 = new Kalkulator().new Accumulator())。如何创建这样的接口对象?我试过了:
KalkulatorI.AccumulatorI t = new KalkulatorI.AccumulatorI();
或
KalkulatorI.AccumulatorI t = new KalkulatorI().new AccumulatorI();
但它不起作用。
AccumulatorI.java:
public interface AccumulatorI {
public int getValue();
public void setValue(int acc);
}
KalkulatorI.java:
public interface KalkulatorI {
public void setAccumulatorA(AccumulatorI a);
public void setAccumulatorB(AccumulatorI a);
}
Kalkulator.java:
public class Kalkulator implements KalkulatorI {
private AccumulatorI AA;
private AccumulatorI BB;
class Accumulator implements AccumulatorI{
private int acc;
public int getValue(){
int res = this.acc;
return res;
}
public void setValue(int acc){
this.acc=acc;
}
}
public void setAccumulatorA(AccumulatorI a){
this.AA=a;
}
public void setAccumulatorB(AccumulatorI a){
this.BB=a;
}
}
【问题讨论】:
-
class Accumulator不是 Kalkulator 的静态属性。类 Accumulartor 实例可以从 Kalculator 对象创建。创造它。然后创建累加器对象。 -
KalkulatorI.AccumulatorI t = new KalkulatorI().new AccumulatorI()?
-
如前所述,您不能实例化接口。但是你可以创建匿名类。我没有先得到你的问题。如果您尝试实例化 Accumulator 而不是 AccumulatorI,则创建 Kalculator 对象,例如
kal。使用kal创建累加器的新对象。关于匿名课,请自行google。
标签: java class interface nested