logo

Caratteri jolly in Java

In Java Generics i caratteri jolly vengono utilizzati quando non se ne conosce il tipo esatto. Ti consentono di scrivere codice flessibile e riutilizzabile. Il carattere jolly è rappresentato da un ? (punto interrogativo). I caratteri jolly vengono utilizzati principalmente nei parametri del metodo per accettare diversi tipi generici in modo sicuro.

Tipi di caratteri jolly in Java

1. Caratteri jolly con limite superiore

Questi caratteri jolly possono essere utilizzati quando si desidera allentare le restrizioni su una variabile. Ad esempio, supponiamo che tu voglia scrivere un metodo che funzioni su List< Integer >Lista< Double >ed Elenco< Number >puoi farlo usando un carattere jolly con limite superiore. 

Per dichiarare un carattere jolly con limite superiore utilizzare il carattere jolly ('?') seguito dalla parola chiave extends seguita dal suo limite superiore. 



public static void add(Listlista)

cos'è uno stack in Java

Attuazione:

Java
import java.util.Arrays; import java.util.List; class WildcardDemo {  public static void main(String[] args)  {  // Upper Bounded Integer List  List<Integer> list1 = Arrays.asList(4 5 6 7);  System.out.println('Total sum is:' + sum(list1));  // Double list  List<Double> list2 = Arrays.asList(4.1 5.1 6.1);  System.out.print('Total sum is:' + sum(list2));  }  private static double sum(List extends Number> list)  {  double sum = 0.0;  for (Number i : list) {  sum += i.doubleValue();  }  return sum;  } } 

Produzione
Total sum is:22.0 Total sum is:15.299999999999999

Spiegazione: Nel programma sopra list1 contiene valori interi e list2 contiene valori doppi. Entrambi vengono passati al metodo sum che utilizza un carattere jolly. Ciò significa che può accettare qualsiasi elenco di un tipo che sia una sottoclasse di Number come Integer o Double.

2. Caratteri jolly con limite inferiore

Si esprime utilizzando il carattere jolly ('?') seguito dalla parola chiave super seguita dal suo limite inferiore:

ipconfig per Ubuntu

Sintassi: Tipo di raccolta

Attuazione: 

Java
import java.util.Arrays; import java.util.List; class WildcardDemo {  public static void main(String[] args)  {  // Lower Bounded Integer List  List<Integer> list1 = Arrays.asList(4 5 6 7);  // Integer list object is being passed  printOnlyIntegerClassorSuperClass(list1);  // Number list  List<Number> list2 = Arrays.asList(4 5 6 7);  // Integer list object is being passed  printOnlyIntegerClassorSuperClass(list2);  }  public static void printOnlyIntegerClassorSuperClass(  List super Integer> list)  {  System.out.println(list);  } } 

Produzione
[4 5 6 7] [4 5 6 7]

Spiegazione: Qui il metodo printOnlyIntegerClassorSuperClass accetta solo Integer o le sue superclassi (come Number). Se provi a passare un elenco di Double viene generato un errore in fase di compilazione perché Double non è una superclasse di Integer.

Java ha il prossimo

Nota: Utilizza il carattere jolly esteso quando vuoi ottenere valori da una struttura e il carattere jolly super quando inserisci valori in una struttura. Non utilizzare caratteri jolly quando ottieni e inserisci valori in una struttura. È possibile specificare un limite superiore per un carattere jolly oppure un limite inferiore ma non è possibile specificarli entrambi.

3. Carattere jolly illimitato

Questo tipo di carattere jolly viene specificato utilizzando il carattere jolly (?), ad esempio List. Questo è chiamato elenco di tipi sconosciuti. Questi sono utili nei seguenti casi:

  • Quando si scrive un metodo che può essere utilizzato utilizzando le funzionalità fornite nella classe Object.
  • Quando il codice utilizza metodi nella classe generica che non dipendono dal parametro type

Attuazione:

Java
import java.util.Arrays; import java.util.List; class unboundedwildcardemo {  public static void main(String[] args)  {  // Integer List  List<Integer> list1 = Arrays.asList(1 2 3);  // Double list  List<Double> list2 = Arrays.asList(1.1 2.2 3.3);  printlist(list1);  printlist(list2);  }  private static void printlist(List list)  {  System.out.println(list);  } } 

Produzione
[1 2 3] [1.1 2.2 3.3]


Crea quiz