【问题标题】:Nested class, implemented interface object嵌套类,实现接口对象
【发布时间】: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


【解决方案1】:

您无法实例化接口,因此无法调用new AccumulatorI()。请看Oracle's documentation

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2015-03-13
    • 1970-01-01
    • 2022-10-12
    • 2013-04-27
    • 2014-12-01
    相关资源
    最近更新 更多