jolly può essere utilizzato con <> operatore in un concetto di farmaci generici introdotto in Java 5, usato per rappresentare tipo sconosciuto. Generics viene utilizzato per definire una classe con membro in formato generalizzato. Se si desidera fornire funzionalità che durante la creazione dell'oggetto, l'utente specificherà il tipo di membro, quindi sarà possibile utilizzare il concetto di generici. Può essere utilizzato solo per il membro dell'istanza non può essere utilizzato con il membro statico, poiché la memoria per lo statico verrà allocata solo una volta.
Il concetto jolly introdotto in generici per limitare il tipo di non conoscenza, diciamo che ho una lista che ha un carattere jolly e questa estensione jolly Number wrapper class. Ciò significa che l'elenco può funzionare con Integer, Long, Short, Byte perché estendono la classe di wrapper Number ma non con String poiché la classe String non estende la classe di wrapper Number.
List<? extends Number> lt = new ArrayList<>();
Venendo a voi il programma, è stata utilizzata la sintassi sbagliata, come ho già detto jolly può essere utilizzato con <> operatore.
Noi non possiamo uso jolly classe, mentre un'istanza come accennato soffietto -
List<?> lt = new ArrayList<?>();
ma possiamo usare farmaci generici per fornire il campo come tipo sconosciuto come me, N, S a dipendente classe. E 'il tipo ci fornirà durante la creazione dell'oggetto della classe -
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<>();
jolly come parametro del metodo -
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);
Dichiarazione variabile locale come wildcard -
List<?> lt = new ArayList<String>();
List<?> lt = new ArayList<Integer>();
Possiamo usare caratteri jolly e generici come tipo di metodo di restituzione. Ecco l'esempio dei farmaci generici come tipo di ritorno di metodo -
public T getName(ClassName obj, Key key)
{
return (Type<T>)obj.getType(Key);
}
Ecco l'esempio di carattere jolly come tipo di ritorno di metodo -
List<?> method(List<?> data)
{
return data;
}
Perché non è una sintassi valida. Non vedo generici, solo '' s. –
Leggere meglio le sottosezioni (https://docs.oracle.com/javase/tutorial/java/generics/upperBounded.html) di caratteri jolly nel capitolo generico. Non è possibile utilizzare i caratteri jolly direttamente per sostituire i tipi. Fai riferimento anche a molti altri esempi forniti da varie fonti sul web. –