Von Inner Classes auf die "Outer Classes" zugreife

Status
Nicht offen für weitere Antworten.

BRT006

Aktives Mitglied
Das Problem stellt sich folgendermaßen dar. Außerdem poste ich, wie ich es gelöst habe, aber das müsste eigentlich auch einfacher/sauberer gehen.


Codebeispiel:
Code:
public class OuterClass
{
 public void doSomething()
 {
  System.out.println("BLA");
 }
 class InnerClass
 {
  public InnerClass()
  {
    //von hier aus kann ich ja problemlos die doSomething Methode rufen:
    doSomething();
    //was aber wenn ich die Referenz es OuterClass-Objects benötige, z.B. um sie an irgendeine andere Klasse zu  
    //übergeben?? Daß ich die Methode der outer class rufen kann, ist ja ein Zeichen dafür, dass die Referenz bekannt
    //sein muß.
  }
 }
}

Ich hab mir da immer so beholfen:
Code:
public class OuterClass
{
 private OuterClass myOwnRef = this;
 public void doSomething()
 {
  System.out.println("BLA");
 }
 class InnerClass
 {
  public InnerClass()
  {
    doSomething();
    //nun habe ich zwar zugriff auf die instanz der outerclass (über myOwnRef) aber das gefällt mir net so recht. 
    //Gibt es da evtl. ein Schlüsselwort, ähnlich super oder this mit der ich auf die Referenz zugreifen kann? 
  }
 }
}



THX
 

thE_29

Top Contributor
Code:
public class OuterClass
{
public void doSomething()
{
  System.out.println("BLA");
}
class InnerClass
{
  public InnerClass()
  {
    //von hier aus kann ich ja problemlos die doSomething Methode rufen:
    doSomething();
    //was aber wenn ich die Referenz es OuterClass-Objects benötige, z.B. um sie an irgendeine andere Klasse zu 
    //übergeben?? Daß ich die Methode der outer class rufen kann, ist ja ein Zeichen dafür, dass die Referenz bekannt
    //sein muß.

//Zu Testzwecken, sodaß auch du das siehst
System.out.println(this.getClass()); //Innerclass
System.out.println(OuterClass.this.getClass()); //Outerclass
  }
}
}

Um also auf das outerclass this Objekt zugreifen zu können, einfach Outerclass.this schreiben, dies ist auch bei anonymen Klassen (sprich Listener) so anzuwenden (im Listener ist das this, der Listener, aber outclass.this ist das andere this)
 
G

Gelöschtes Mitglied 5909

Gast
kann man auch ne methode der super class in der innerclass aufrufen?

Beispiel:

Code:
// RingList.java
// Project: util
// Author: Liar
// 30.04.2008 21:16:25

package util.collection;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.NoSuchElementException;

/**
 * @author Liar
 */
public class LinkedRingList<E> extends LinkedList<E> {

	private static final long serialVersionUID = -25374615113953969L;


	/* (non-Javadoc)
	 * @see java.util.AbstractSequentialList#iterator()
	 */
	@Override
	public Iterator<E> iterator() {
		return new Iterator<E>() {

			Iterator<E> iter = LinkedRingList.this.listIterator();
			
			@Override
			public boolean hasNext() {
				return true;
			}

			@Override
			public E next() {
				if (LinkedRingList.this.isEmpty()) {
					throw new NoSuchElementException();
				}
				if (!iter.hasNext()) {
					iter = LinkedRingList.this.listIterator();
				} 
				return iter.next();
			}

			@Override
			public void remove() {
				iter.remove();
			}
			
		};
	}
	
}

kann man da nicht auch den iterator von der methode iterator() aus linkedlist nehmen?
RingList.this.iterator() dreht sich im kreis

(ich weiß dass listIterator() der gleiche iterator ist, würde den aber gerne durch iterator() erhalten)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M reflection in inner classes Allgemeine Java-Themen 7
M Problem mit Variablenzugriff bei annonymous inner classes Allgemeine Java-Themen 2
I reflection get inner static classes Allgemeine Java-Themen 2
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
G Thread in Methode oder in inner class Allgemeine Java-Themen 3
G static inner Klassen Allgemeine Java-Themen 7
C Probleme bei inner class Allgemeine Java-Themen 3
P Feststellen, Welche Classes ich aus einem JAR nutze? Allgemeine Java-Themen 6
L Vererbung Using @Autowired in Abstract Classes Allgemeine Java-Themen 4
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
fastjack JUnit Supplementary Classes Allgemeine Java-Themen 4
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
T Protected Classes/Members Allgemeine Java-Themen 2
E Anonymous Classes und UML Allgemeine Java-Themen 5
F JNI - Istanzieren einer C++ classes aus einem Java-Programm Allgemeine Java-Themen 4
D Eigene Classes aus anderen .java-Dateien Allgemeine Java-Themen 2
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben