簡體   English   中英

一個內部類,一個外部接口,如何獲得訪問權限?

[英]An inner class, an outer interface, how to get an access?

我有一個內部類的接口。 現在的問題是,為什么我不能以類似於在外部類中訪問方法的方式訪問外部接口中定義的函數? 我認為事情應該順利進行,因為只有在實現了外部接口的類之后才實例化該內部類。 無論如何,我得到的錯誤是“在作用域中無法訪問OterInterface類型的封閉實例”

public interface OterInterface {

    public void someFunction1() ;
    public void someFunction2() ;


    public class Innerclass{
        public String value1;
        public String value2;

        public String getValue1() {
            OterInterface.this.someFunction1();         
            return value1;
          }
      }     
}

在這種情況下,您可以使用匿名內部類。 由於您無法實例化任何接口,因此無法訪問其方法。 接口是具有未實現方法的不完整類。 為了實例化它,您必須提供其方法的實現。

 public interface OterInterface {

    public void someFunction1() ;
    public void someFunction2() ;


    public class Innerclass{
        public String value1;
        public String value2;

        public String getValue1() {
            new OterInterface(){
                public void someFunction1() {
                    System.out.println("someFunction1()");
                }
                public void someFunction2() {
                    System.out.println("someFunction2()");
                }
            }.someFunction1();
            return value1;
          }
      }     
}

考慮一下您要在哪個OterInterface實例上執行“ someFunction”。 “ this”是指當前對象 -OterInterface是一個接口,因此沒有當前對象。

所以您不能從那里引用OterInterface.this,因為編譯器不知道您要引用哪個對象實例!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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