[英]Java - object of a private inner class being as an argument to an outer class' constructor
[英]Inner class object as Outer class constructor argument
我有一個抽象包裝類Foo,它通過提供Interface Reader來定義功能。 當我實現一個單獨的Reader並提供它時,一切正常。 當我試圖通過內部階級來做這件事時,它會出錯。 將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中的內部類綁定到外部實例而不是類,除非它們是靜態的 。
public class ReaderFoo extends Foo
{
public static class FooReader implements Reader
{
@Override
public void doit()
{
// functionality
}
}
public ReaderFoo ()
{
super(new FooReader());
}
}
在實際擁有實例之前,您不能使用實例內部類,因為Reader
的實際類型將類似於myInstance.Reader
。
問題是FooReader
的構造FooReader
需要在它之前實例化外部類( ReaderFoo
)(因為內部類存儲對其包含實例的引用),但是你在構造函數中為ReaderFoo
創建一個。 這是一個雞蛋問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.