Ich möchte eine Methode implementieren, die den Vergleich von Objekten desselben Typs ermöglicht.Stellen Sie sicher, dass generische Vararg-Parameter vom selben Typ sind
Ist es machbar zu implementieren isOnceOf()
zu Kompilierzeit Typ strict und geben Sie mir Kompilierungsfehler in Zeile 3?
Derzeit bekomme ich nur eine Warnung.
public static void main(String[] args) {
System.out.println(isOneOf(3, 1, 2, 3)); // true
System.out.println(isOneOf("A", "B", "C", "D")); // false
System.out.println(isOneOf(1, "B", "C", "D")); // false, warn
}
public static <T> boolean isOneOf(T obj, T mate, T... mates) {
if (obj == null) {
return false;
}
if (obj.equals(mate)) {
return true;
}
for (T m : mates) {
if (obj.equals(m)) {
return true;
}
}
return false;
}
Typ-Inferenz arbeitet gegen Sie = /. – Tunaki
Eigentlich können Sie ja: 'System.out.println (MyClass. isOneOf (1," B "," C "," D "));' wird fehlschlagen. Sie können den Aufrufer jedoch nicht zwingen, dieses Formular zu verwenden. –
http://StackOverflow.com/Q/9299194/1743880 auch http://StackOverflow.com/Q/17390441/1743880. Auch verwandt http://stackoverflow.com/q/26538980/1743880 – Tunaki