title image


Smiley Implementierung eines Interfaces direkt im Interface
So, jetzt zu meiner Frage:



Mein Prof zaubert ständig irgendwelche kranken Java-Konstrukte. Leider kann ich ihn momentan nicht fragen, was er dieses Mal gebaut hat, aber will's jetzt wissen!



Er hat IN einem Interface Objekte von diesem Interface angelegt und gleich implementiert, da er ja die Methode des Interfaces Convertible implementieren muss.



package logic;



import java.text.DateFormat;

import java.util.Date;

import java.util.Locale;

import java.util.Scanner;





public interface Convertible {

R convert(V value);

}





public interface ConvertibleScanner extends Convertible {



ConvertibleScanner NO_CONVERSION = new ConvertibleScanner() {

public String convert(Scanner sc) {

return sc.hasNext() ? sc.next() : null;

}

};



ConvertibleScanner NUMBER = new ConvertibleScanner() {

public Number convert(Scanner sc) {

return sc.hasNext() ? sc.nextDouble() : null;

}

};



ConvertibleScanner BOOLEAN = new ConvertibleScanner() {

public Boolean convert(Scanner sc) {

return sc.hasNext() ? sc.nextBoolean() : null;

}

};



ConvertibleScanner DATE = new ConvertibleScanner() {

public Date convert(Scanner sc) {

DateFormat df = DateFormat.getDateInstance(

DateFormat.MEDIUM, Locale.GERMAN);

try {

return df.parse(sc.next());

}

catch (java.text.ParseException pe) {

return null;

}

}

};

}



Verwendung:



String line = "Hallo";

Scanner scanner = new Scanner(line);

ConvertibleScanner cs = ConvertibleScanner.NO_CONVERSION;

cs.convert(scanner);



Die "Dinger" sind anscheinend automatisch static final. Aber wie heißt sowas? Innere Implementierung? Weiß das jemand? Und wieso kann er Objekte eines Interfaces anlegen? OK, er implementiert ja die benötigte Methode, aber trotzdem... krankes Zeug! ;-)



Danke im Voraus



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: