können Wildcard mit <> Operator in einem Generika-Konzept in Java 5, verwendet eingeführt verwendet werden, um unbekannte Art darstellen. Generics wird verwendet, um eine Klasse mit einem Element im verallgemeinerten Format zu definieren.Wenn Sie eine Funktion bereitstellen möchten, die beim Erstellen des Objekts den Benutzer angibt, geben Sie den Typ des Elements an, und Sie können das Konzept der Generika verwenden. Es kann nur für das Instanzelement verwendet werden, das nicht mit dem statischen Element verwendet werden kann, da Speicher für statische Daten nur einmal zugewiesen wird.
Wildcard-Konzept in Generika eingeführt, um unknow type zu beschränken, sagen wir, ich habe Liste, die Platzhalter hat und diese Platzhalter erweitern Nummer Wrapper-Klasse. Das bedeutet, dass list mit Integer, Long, Short, Byte arbeiten kann, weil sie die Number-Wrapper-Klasse erweitern, aber nicht mit String, da die String-Klasse die Number-Wrapper-Klasse nicht erweitert.
List<? extends Number> lt = new ArrayList<>();
Sie Programm kommen, haben Sie falsche Syntax verwendet, wie ich Wildcard erwähnt haben, können mit <> Operator verwendet werden.
Wir nicht Verwendung Platzhalter während der Instanziierung Klasse wie unten erwähnt -
List<?> lt = new ArrayList<?>();
aber wir können Generika verwenden Sie das Feld als unbekannte Art wie I, N, S in Mitarbeiter zu schaffen, Klasse. Es ist Art stellen wir dabei die Aufgabe der Klasse erstellen -
class Employee<I,N,S>
{
I eid;
N empName;
S empSalary;
}
class Name
{
String firstName;
String middleName;
String lastName;
}
class salary
{
double basic;
float it;
float tds;
double netsal;
}
class CustomId
{
int empId;
String department;
int branchId;
}
main method
------------
Employee<Integer,String,Double> emp = new Employee<>();
Employee<String,Name,Salary> emp2 = new Employee<>();
Employee<CustomId,String,Salary> emp3 = new Employee<>();
Wildcard als Methodenparameter -
public void sortList(List<?> lt)
{
// code to sort the list whether it is integer, String etc
}
call sortList() method
-----------------------
List<String> lt = new List<>();
lt.add("sss");
lt.add("aaa");
sortList(lt);
List<Integer> lt = new List<>();
lt.add(11);
lt.add(12);
sortList(lt);
lokale Variable als Platzhalter Deklarieren -
List<?> lt = new ArayList<String>();
List<?> lt = new ArayList<Integer>();
Wir können Wildcard und Generics als Rückgabetyp der Methode verwenden. Hier ist das Beispiel von Generika als Rückgabetyp Methode -
public T getName(ClassName obj, Key key)
{
return (Type<T>)obj.getType(Key);
}
Hier ist das Beispiel des Wildcard als Rückgabetyp Methode -
List<?> method(List<?> data)
{
return data;
}
Weil das keine gültige Syntax ist. Ich sehe keine Generika, nur '?' S. –
Lesen Sie besser die Unterabschnitte (https://docs.oracle.com/javase/tutorial/java/generics/upperBounded.html) von Platzhaltern im generischen Kapitel. Sie können die Platzhalter nicht direkt zum Ersetzen der Typen verwenden. Siehe auch viele weitere Beispiele, die von verschiedenen Quellen im Internet bereitgestellt werden. –