Zitat Zitat von YoshiGreen Beitrag anzeigen
Ist die Wildcard <?> für den Vector wirklich nötig? Bei mir kompiliert es auch ohne diese Angabe - oder ist das Platform/Versionsabhängig?
Theoretisch sollte es egal sein, da Vector ein Raw-Type ist und <?> einen unbekannten Typ definiert. Da alle Datentypen von der Klasse Object erben, sollten beide Möglichkeiten gleich sein. Allerdings spuckt z.B. die IDE Eclipse einen Warnhinweis, wenn man mit einem Raw-Type arbeiten möchte.


Zitat Zitat von YoshiGreen Beitrag anzeigen
Und gibt es einen Grund die Klassen auf String-Ebene zu vergleichen? Im folgenden Beispiel habe ich die equal-Methode der Class-Klasse genutzt. (und wenn der fragliche Vector als Paramter übergeben wird, spart man sich doch auch die if != null Abfrage),
Man muss hier zweierlei Dinge betrachten. Einmal der Typ Vector und einmal der Typ, der im Vektor gespeichert wird.
Du kannst ja gerne mal einen Test machen:
Code:
public static boolean hasStrings(Vector data){
    System.out.println((new Vector<String>().getClass()));
    System.out.println(data.getClass());
    return new Vector<String>().getClass().equals(data.getClass());
  }
Du wirst feststellen, dass beide vom Typ Vector sind. Es spielt da keine Rolle, welcher generische Datentyp angegeben wurde. In der Klasse Vector befindet sich ja eine Liste, die den angegebenen generischen Typ speichert. Man muss dann also schauen, welchen Typ die Elemente in dieser Liste besitzen.