2016-06-20 6 views
0

Ein Freund von mir schreibt etwas Java-Code und wir tauschen einige Gedanken über seine Probleme aus (er benutzt ziemlich das vermasselte Rahmenwerk).Java: Was ist der Zweck, eine Klasse in einer Schnittstelle zu haben

Eines seiner Probleme wurde gelöst, indem ein Enumerate in eine private Klasse innerhalb einer Schnittstelle platziert wurde. Als er mir das erzählte, bekam ich ziemlich Kopfschmerzen. Er sagte es ist eine Möglichkeit, eine Schnittstelle innerhalb einer Schnittstelle aufzuzählen. Ich dachte immer, dass Schnittstellen ausschließlich eine Schnittstelle freilegen und nichts mehr.

Warum ist es möglich, Klassen innerhalb von Schnittstellen zu platzieren, und welchen Zweck kann es erfüllen?

+3

Klar, das ist völlig normal. Es ist nur eine Frage der Organisation: Wenn die Klasse logisch mit der Schnittstelle verbunden ist, dann könnte es genauso gut dort sein. –

+2

wahrscheinlich wird diese Klasse als Parameter oder Rückgabetypen in der Schnittstelle verwendet werden – MeBigFatGuy

Antwort

3

Wir können Klassen innerhalb von Schnittstellen haben. Ein Beispiel für seine Verwendung kann sein:

public interface Input 
{ 
    public static class KeyEvent { 
     public static final int KEY_DOWN = 0; 
     public static final int KEY_UP = 1; 
     public int type; 
     public int keyCode; 
     public char keyChar; 
    } 
    public static class TouchEvent { 
     public static final int TOUCH_DOWN = 0; 
     public static final int TOUCH_UP = 1; 
     public static final int TOUCH_DRAGGED = 2; 
     public int type; 
     public int x, y; 
     public int pointer; 
    } 
    public boolean isKeyPressed(int keyCode); 
    public boolean isTouchDown(int pointer); 
    public int getTouchX(int pointer); 
    public int getTouchY(int pointer); 
    public float getAccelX(); 
    public float getAccelY(); 
    public float getAccelZ(); 
    public List<KeyEvent> getKeyEvents(); 
    public List<TouchEvent> getTouchEvents(); 
} 

Hier ist der Code hat zwei verschachtelte Klassen, die zum Einkapseln von Informationen zu Ereignisobjekten sind, die später verwendet werden, in Methodendefinitionen wie getKeyEvents(). Wenn Sie sie in der Eingabe-Schnittstelle haben, wird die Kohäsion verbessert.

+0

ich nie obwohl auf die Verwendung .... Danke – Camandros