gpt4 book ai didi

java - 内部类对象作为外部类构造函数参数

转载 作者:搜寻专家 更新时间:2023-11-01 01:53:49 24 4
gpt4 key购买 nike

我有一个抽象包装类 Foo,它通过为它提供接口(interface)阅读器来获得定义的功能。当我实现一个单独的阅读器并提供它时,一切都很好。当我试图通过内部类执行此操作时,它出错了。在内部类中实现 Reader 是我的要求。

public abstract class Foo
{
private Reader reader;

public Foo(Reader reader)
{
this.reader = reader;
}

public void read()
{
this.reader.doit();
}
}

“由于某些中间构造函数调用,没有类型 MapLink 的封闭实例可用”

public class ReaderFoo extends Foo
{
public class FooReader implements Reader
{
@Override
public void doit()
{
// functionality
}
}

public ReaderFoo ()
{
super(new FooReader());
}
}

我做错了什么?

最佳答案

尝试制作 FooReader static。 Java 中的内部类绑定(bind)到外部的实例而不是,除非它们是静态的

public class ReaderFoo extends Foo
{
public static class FooReader implements Reader
{
@Override
public void doit()
{
// functionality
}
}

public ReaderFoo ()
{
super(new FooReader());
}
}

您不能在实际拥有实例之前使用实例内部类,因为 Reader 的实际类型将类似于 myInstance.Reader

关于java - 内部类对象作为外部类构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16854346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com