Konstruktoren bei anonymen Klassen

Thomas Darimont

Erfahrenes Mitglied
Hallo!

Ja, auch bei anonymen Klassen gibt es Konstruktoren, jedoch ist deren aufruf Syntax etwas "ungewohnt":

Zbsp.:
Code:
		new Thread(){
			{//Hier folgt der Konstruktor Block:
				setPriority(MIN_PRIORITY);
			}
			public void run(){
				System.out.println("Loooooooong operation");
			}
		}.start();

Mal ganz nebenbei... ;)
*Beitragszähler hochpush*

Gruß Tom
 
Hallo!

Das ist so nicht korrekt:
Code:
package de.tutorials;

/**
 * @author Darimont
 *  
 */
public class Test35 {
	public Test35() {
		System.out.println("C");
	}

	{
		System.out.println("A");
	}

	static {
		System.out.println("B");
	}

	public static void main(String[] args) {
		new Test35();
	}
}

Gibt
B
A
C

aus...

static Blöcke werden mit static{ ... eingeleitet...


Gruß Tom
 
Übrigens werden diese Anonymen Konstruktoren NACH den "eigentlichen" Konstruktoren der jeweiligen Klasse aufgerufen:

Beispiel:

Code:
/**
 * @author Darimont
 *  
 */
public class Test35 {

    public static void main(String[] args) {
        new Test35().doIt();
    }

    /**
     *  
     */
    private void doIt() {
        System.out.println(new T(Thread.MAX_PRIORITY) {
            {
                System.out.println("Ctor anony");
                setPriority(Thread.MIN_PRIORITY);
            }
        }.getPriority());

    }

    class T extends Thread {
        public T(int prio) {
            System.out.println("CTor T");
            setPriority(prio);
        }
    }
}

Ausgabe:
CTor T
Ctor anony
1

Gruß Tom
 
Zurück