Java 8使用来自超类

时间:2017-03-20 20:27:44

标签: java java-8

我正在尝试构建一个像这样的子类

abstract class Foo
{
    abstract BiConsumer getConsumer();

    Foo(Object value)
    {
        getConsumer().accept(this, value);
    }
}

class Bar extends Foo
{
    Object value = SOME_OBJECT_1;

    @Override
    BiConsumer getConsumer()
    {
        return (object, value) -> ((Bar)object).setValue(value);
    }

    Bar()
    {
        super(SOME_OBJECT_2);
    }

    void setValue(Object value)
    {
        this.value = value;
    }
}

但使用HashMap存储要在不同子类中初始化的不同内容。

问题是,当我这样做时,运行

System.out.println(((Bar)this).value);

Foo的构造函数中接受使用者后,我按预期得到了SOME_OBJECT_2。但是,当我跑

System.out.println(this.value);

super的构建器中Bar调用后,我得到SOME_VALUE_1

为什么会这样,我该如何解决?

Here是我的超类供参考,herehere是子类的一些示例

0 个答案:

没有答案