Interface Enumeration

Wang

Bekanntes Mitglied
Moin',

ich habe eine Frage zu folgendem Quellcode:

Java:
import java.util.*;

public class Example1203 {
   public static void main(String[] args)
   {
      Hashtable h = new Hashtable();

      //Pflege der Aliase
      h.put("Fritz","f.mueller@test.de");
      h.put("Franz","fk@b-blabla.com");
      h.put("Paula","user0125@mail.uofm.edu");
      h.put("Lissa","lb3@gateway.fhdto.northsurf.dk");

      //Ausgabe
      Enumeration e = h.keys();
      while (e.hasMoreElements()) {
         String alias = (String)e.nextElement();
         System.out.println(
            alias + " --> " + h.get(alias)
         );
      }
   }
}

(Quelle: Guido Krger - JAVA 1.1 lernen - Kapitel 12 Die Klasse Hashtable)

Bei Enumeration handelt es sich ja um ein Interface. Warum muss es am Anfang dann nicht
Code:
public class Example1203 implements Enumeration
heißen?

Vielen Dank.

Gruß
Wang
 

eRaaaa

Top Contributor
Naja, die Klasse soll ja keine Enumeration sein/bereitstellen..die nutzt ja einfach nur eine ?! Du benutzt ja auch manchmal eine ArrayList und schreibst List<...> list = ... ohne oben implements List zu schreiben oder? Ist das Selbe in grün. Oder benutzt den Iterator an diversen Stellen, da schreibste das ja auch nicht.

In HashTable gibt es dann z.B. eine innere/statische Klasse EmptyEnumerator o.ä. - dieser implementiert das Interface. Die HashTable gibt dann einfach nur diese Enumeration zurück bei keys(), und die Klasse Example1203 kann diese benutzen!
 
Zuletzt bearbeitet:

Landei

Top Contributor
Ähm, dir ist aber schon klar, dass du dich da mit Fossilien beschäftigst? Statt Enumeration wird in allen moderneren APIs Iterator verwendet, statt Hashtable nimmt man HashMap, und inzwischen kann man selbiger auch Typparameter (a.k.a. Generics) mitgeben. Die alten Klassen Hashtable und Vector sind an die "neue" (na ja, auch nicht mehr ganz taufrische) Collection-Hierarchie nachträglich angepasst worden.

Im dritten Jahrtausend schreibt man
Java:
public class Example1203 {
   public static void main(String[] args)
   {
      Map<String, String> h = new HashMap<String, String>();
 
      //Pflege der Aliase
      h.put("Fritz","f.mueller@test.de");
      h.put("Franz","fk@b-blabla.com");
      h.put("Paula","user0125@mail.uofm.edu");
      h.put("Lissa","lb3@gateway.fhdto.northsurf.dk");
 
      //Ausgabe
      for(String alias : h.keySet()) { 
         System.out.println(
            alias + " --> " + h.get(alias)
         );
      }
   }
}

bzw. etwa effizienter (da wir ja sowieso Keys und Values brauchen):

Java:
...
      //Ausgabe
      for(Map.Entry<String,String> entry : h.entrySet()) { 
         System.out.println(
            entry.getKey() + " --> " + entry.getValue()
         );
      }
...
 

Wang

Bekanntes Mitglied
Danke Landei.

Ehrlich gesagt war ich mir darüber nicht wirklich im Klaren. Welche Nachteile habe ich, wenn ich "Enumeration" und "Hashtable" im dritten Jahrtausend verwende?

Gruß
Wang
 

Landei

Top Contributor
Hashtable und Vector sind langsamer als HashMap und ArrayList (weil sie threadsafe ist, was du aber im Normalfall gar nicht brauchst). Im Prinzip spricht nichts weiter dagegen, sie trotzdem zu verwenden, dann solltest du aber nur die Standardmethoden der jeweiligen Interfaces Map und List verwenden, damit du flexibel bleibst. Z.B. rufst du in deinem Programm h.keys() aus, aber diese Methode gibt es nur in Hashtable, aber nicht in anderen Maps. Es wird also schwieriger, deine Map gegen eine andere auszutauschen (etwa gegen TreeMap, bei der die Schlüssel sortiert sind).

Enumeration wird einfach kaum noch verwendet. Iterator hat dieselbe Funktionalität (plus eine "optionale" Methode zum Löschen von Elementen), aber kürzere Methodennamen. Außerdem haben Listen einen erweiterte Klasse ListIterator, die z.B. auch rückwärts iterieren kann. Wenn du die "neue" for-Schleifen-Syntax mit dem Doppelpunkt verwenden willst, muss die entsprechende Klasse, über die du iterierst, das Interface Iterable implementieren, das wiederum einen Iterator (und keine Enumeration) zurückliefert.

Warum lernst du mit dem alten Schinken? Die Insel ist aktuell und umsonst: Galileo Computing :: Java ist auch eine Insel (8. Auflage)
 

Wang

Bekanntes Mitglied
Vielen Dank.
Etwas Java-Historie schadet nie und so habe ich doch mehr gelernt, als wie wenn ich mich nur mit den aktuellen Dingen beschäftige (auch wenn das in diesem Fall eher ein Zufall war). ;-)

Eine allgemeine Frage:
Wo kann mann eigentlich nachsehen - sofern das überhaupt öffentlich ist - wie die Methoden der API implementiert sind?


Gruß
Wang
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Abstrakt oder Interface Java Basics - Anfänger-Themen 3
Say public/default Interface Java Basics - Anfänger-Themen 9
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
I Browser integriert in Desktop Applikation - Webcam interface not found Java Basics - Anfänger-Themen 26
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
D Interface Verständisfrage Java Basics - Anfänger-Themen 8
U Interface | constructor injection Java Basics - Anfänger-Themen 5
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
T Interface Map und Map.Entry Java Basics - Anfänger-Themen 4
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
I JSON und Interface Java Basics - Anfänger-Themen 3
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
L Interface & Comparable Java Basics - Anfänger-Themen 15
T Interface Java Basics - Anfänger-Themen 0
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
H abstract und interface Java Basics - Anfänger-Themen 4
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2
P Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
G Interface klasse Java Basics - Anfänger-Themen 4
N Interface Interface (sinnvoll) erzeugen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben