2016-03-25 17 views
2

İç Ortam İçindekilere sahip bir Dış Arabirim var. OuterInterface, GetInnerInterfaceReference() adı verilen bir yönteme sahiptir. Bu yöntemin dönüş tipi, InnerInterface'dir. Bu örnek, Örnek sınıfında gerçekleştirilmiştir. Bu nedenle, GetInnerInterfaceReference() yöntemi, InnerInterface tür değişkeni başvurusu döndürmelidir. Bunu nasıl başarabilirim? Ben başvuru aldıktan sonraDönüş türü Dış arabirim olan iç içe geçmiş arabirim yöntemi nasıl uygulanır?

class Example implements OuterInterface,OuterInterface.InnerInterface { 

    public void InnerInerfaceMethod() { 
     System.out.println("inner method called"); 
    } 

    public InnerInterface GetInnerInterfaceReference() { 
     //return 
    } 
} 

, o zaman ben ex.InnerInterfaceMethod();

arayarak sonuçları basitçe elde Ama edebilirsiniz

public class Sample { 

    public static void main(String[] args) { 
     Example ex = new Example(); 
     ex.GetInnerInterfaceReference().InnerInerfaceMethod(); 
    } 
} 

InnerInterface içindeki yöntemini çağırmak için kod aşağıdaki kullanabilirsiniz, ben ne zaman bu sorguyu var WebDriver arabiriminden geçiyordum. Bu WebDriver'ın bazı statik iç içe geçmiş arabirimleri ve bazı yöntem bildirimleri vardır. Bu yöntemlerden bazıları dönüş türleri bu iç içe geçmiş arayüzlerdir. Peki, bu yöntemlerin ChromeDriver veya FirefoxDriver gibi uygulanan sınıflarda nasıl tanımlandığını merak ediyorum. Böyle

cevap

0

: Bu gibi

class Example implements OuterInterface,OuterInterface.InnerInterface { 

    public void InnerInerfaceMethod() { 
     System.out.println("inner method called"); 
    } 

    public InnerInterface GetInnerInterfaceReference() { 
     return this; 
    } 
} 
0

şey:

public interface OuterIntf { 
    public interface InnerIntf { 
     public OuterIntf someInnerMethod(); 
    } 

    public InnerIntf someOuterMethod(); 
} 

public class Implementation implements OuterIntf, InnerIntf{ 

    /* (non-Javadoc) 
    * @see practise.OuterIntf.InnerIntf#someInnerMethod() 
    */ 
    @Override 
    public OuterIntf someInnerMethod() { 
     // TODO Auto-generated method stub 
     return this; 
    } 

    /* (non-Javadoc) 
    * @see practise.OuterIntf#someOuterMethod() 
    */ 
    @Override 
    public InnerIntf someOuterMethod() { 

     return this; 
    } 

}