簡體   English   中英

內部類對象作為外部類構造函數參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM