Konzept: Innere Klasse, Anwendungsbeispiel?

Status
Nicht offen für weitere Antworten.

siba

Bekanntes Mitglied
Im Rahmen der Java-Zertifizierung beschäfitge ich mich gerade mit Inneren Klassen! Kann mir jemand einen sinnigen Anwendungsfall nennen? Wo bringen Innere Klassen tatsächlich Vorteile?

L-ectron-X hat den Titel angepasst.
 

Sky

Top Contributor
Zunächst mal klingt deine Aussage so, als würdest Du darin keine Vorteile sehen (evtl. sogar Nachteile).

IMHO bietet sich z.B. ein ActionListener an, in einer inneren Klasse implementiert zu werden.
Ansonsten gibt es in der API ein paar Beispiele; z.B. HTML und HTML.Tag
 

siba

Bekanntes Mitglied
Mir fällt es ehrlich gesagt sehr schwer, Innere Klassen als sinnvoll zu erachten. Beispiele mit dem ActionListener kenne ich, ich dachte eher an irgendwelche selbsterstellte Beispiele! Das einzige was mir dazu einfällt ist folgendes

public class Pfirsich {

public class Kern{

}
}

Würde dies der Logik von inneren Klassen entsprechen?
 
S

stev.glasow

Gast
Jop, obwohl innere Klassen meist anonym oder static sind.
[edit]
Hier mal ein Beispiel, dass mit einer anonymen und einer private statischen inner Class arbeitet
Code:
public class KomplexeDatenstruktur{

   private static float eineConstante = 4.6f; 
   
   private static class Data{
		/*
		  man kann sie auch sowohl öffentlich als auch als äußere Klasse machen, 
		  aber wenn man die Klasse 'Data' gar nicht an andere Stelle braucht, 
		  weil sie evtl. nur als Hilfklasse für diese 'KomplexeDatenstruktur' dient,
		  ist das eigentlich eine gute Lösung.
		  Es ist halt nur eine Schönheitsfrage und geht auch immer als äußere oder öffentliche innere Klasse.
		  Eine Klasse innerhalb einer anderen zu machen, kann auch den Vorteil haben, 
		  dass sie die privaten Varibalen der um schließenden Klasse nutzen kann.
		  Eine Statische inner Class kann dabei die statischen Varibablen nutzen und eine nicht statische sogar
		  die Instanz Variblen (Beispiel zum Schluss)
		  */
		
		
		public void setFoo(int foo){
		   this.foo = foo * eineConstante;
		}
		
		public byte[] getBytes(){
		   return  ...
		}

   }
    ...
    // ganz viele gemeine Sachen
    ...
    
	public InputStream asByteStream(){ 
	    return new InputStream(){ // halt die anonyme Klasse

                private final Iterator<Data> i = datas.iterator();
                
                private InputStream aktStream = null;
                
                public int read() throws IOException {
                    if(aktStream == null){
                        if(!i.hasNext()) return -1;
                        aktStream = new ByteInputStream(i.next().getBytes());
                    }
                    int r = aktStream.read();
                    while(r == -1 && i.hasNext()){
                        aktStream = new ByteInputStream(i.next().getBytes());
                        r = aktStream.read();
                    }
                    
                    return r;
                }
                
            };
	}

}

Hab ich glaub ich erst einmal benutzt aber hier noch eins für eine nicht statiche öffentliche InnerClass

Code:
public class Fabrik{
	
	
	public static void main(String[] args){
	    Fabrik f = new Fabrik();
	    f.setAktYear(2002);
	    Fabrik.Car c1 = f.new Car();
	    System.out.println(c1.getQualtität());
	    
	    f.setAktYear(2006);
	    Fabrik.Car c2 = f.new Car();
	    System.out.println(c2.getQualtität());
	}
	
	private Foo w;
	private int aktYear;
	
	public void setFoo(Foo val){
	  w = val;
	}
	
	public void setAktYear(int y){
		this.aktYear = y;
	}
	
	public class Car{
		private final int baujahr;
	   	
	   	public Car(){
	   		this.baujar = aktYear;
	   	}
	   
	  
	   public float getQualtität(){
	      return foo * Math.PI * baujahr / 0815;
	   }
	
	}
}
Cool ist halt die starke Bindung der Klasse Car an die Fabrik Instanz , mit der man auch die privtaten Instanzvaribalen(siehe foo oder aktYear) nutzen kann.


so, hab keine Lust mehr, aber vieleicht hats etwas geholfen.

Für öffentlich statische Klassen sind
Point2D
Point2D.Double
Point2D.Float
noch ein gutes Beispiel.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Timer Konzept-Frage Allgemeine Java-Themen 16
S Suche Konzept: Korrektheit des Aufrufers feststellen Allgemeine Java-Themen 7
J MVC Konzept Allgemeine Java-Themen 1
reibi log4j - Bestes Konzept Allgemeine Java-Themen 10
E Super erzwingen, konzept/pattern gesucht. Allgemeine Java-Themen 8
D GUI-Controller Konzept Allgemeine Java-Themen 6
G UML Konzept Allgemeine Java-Themen 3
M Backend Entwicklung - Konzept fragen Allgemeine Java-Themen 3
E Wie anfangen? Konzept / Designfrage Allgemeine Java-Themen 17
R Konzept eines Software-Rollout/Synchronisation via WebService Allgemeine Java-Themen 5
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
MQue Thread Konzept Allgemeine Java-Themen 8
G MVC-Konzept - effizienz beim "notify" Allgemeine Java-Themen 2
MQue Konzept- Frage zum Button-Aktualisieren Allgemeine Java-Themen 5
S Frage zum Java-Konzept Allgemeine Java-Themen 6
H GUI - Konzept Allgemeine Java-Themen 3
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
F Enums als innere Klasse sinnvoll? Allgemeine Java-Themen 3
S Zugriff auf innere Klasse Allgemeine Java-Themen 3
Q Der innere Typ von Generics? Allgemeine Java-Themen 3
C Innere Klassen und UML Allgemeine Java-Themen 3
S Innere Klasse: Zugriff auf äußere Variable Allgemeine Java-Themen 5
S Innere Klassen und die statische Methode access$x Allgemeine Java-Themen 5
G innere Erzeuger- Klasse Allgemeine Java-Themen 5
O Verschachtelte Iteration: Innere Iteration abbrechen Allgemeine Java-Themen 3
C Innere Klassen zur Laufzeit Instanzieren Allgemeine Java-Themen 4
W Innere Klasse und final Allgemeine Java-Themen 11
M innere Klassen - EJB 2.x Allgemeine Java-Themen 6
P innere Klasse auflösen Allgemeine Java-Themen 5
F Innere Klassen Allgemeine Java-Themen 4
K Reflection:Zugriff auf innere Klassen Allgemeine Java-Themen 4
A Eventhandler: innere Klassen vs. "normale Klassen" Allgemeine Java-Themen 3
E Innere Klassen Allgemeine Java-Themen 3
B Innere Methoden Allgemeine Java-Themen 2
B Zugriff auf innere Methoden Allgemeine Java-Themen 4
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
kanywayne Java programmieren: Polynom Klasse Allgemeine Java-Themen 4
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
C Klasse mit Mockito simulieren Allgemeine Java-Themen 9
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S static in Interface und Klasse Allgemeine Java-Themen 2
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
J Builder Klasse mit Lombok bauen Allgemeine Java-Themen 2
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
M [SOAP] - Klasse aus WSDL ausschließen Allgemeine Java-Themen 2
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
X Klassen Klasse BreakIterator Allgemeine Java-Themen 6
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
M Kapselung Modellierung von Intervallen: Klasse Interval Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
ReinerCoder Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
J IndexOutOfBoundsException bei der Nutzung der Klasse Message von mime4j Allgemeine Java-Themen 5
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
perlenfischer1984 Lombok Builder soll andere Klasse bauen Allgemeine Java-Themen 4
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Allgemeine Java-Themen 7
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1

Ähnliche Java Themen


Oben