logo

Jokertecken i Java

I Java används generiska jokertecken när du inte känner till den exakta typen. De låter dig skriva flexibel och återanvändbar kod. Jokertecknet representeras av en ? (frågetecken). Jokertecken används huvudsakligen i metodparametrar för att acceptera olika generiska typer på ett säkert sätt.

Typer av jokertecken i Java

1. Övre gränsade jokertecken

Dessa jokertecken kan användas när du vill lätta på begränsningarna för en variabel. Säg till exempel att du vill skriva en metod som fungerar på List< Integer >Lista< Double >och Lista< Number >du kan göra detta med ett jokertecken med övre gräns. 

För att deklarera ett jokertecken med övre gräns, använd jokertecken ('?') följt av nyckelordet extends följt av dess övre gräns. 



public static void add(Listlista)

databasdesign i dbms

Genomförande:

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;  } } 

Produktion
Total sum is:22.0 Total sum is:15.299999999999999

Förklaring: I programmet ovan innehåller list1 heltalsvärden och list2 har dubbla värden. Båda skickas till summametoden som använder ett jokertecken. Detta betyder att den kan acceptera vilken lista som helst av en typ som är en underklass till Number som heltal eller dubbel.

2. Lägre gränsade jokertecken

Det uttrycks med jokertecken ('?') följt av supernyckelordet följt av dess nedre gräns:

rdbms normalisering

Syntax: Samlingstyp

Genomförande: 

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);  } } 

Produktion
[4 5 6 7] [4 5 6 7]

Förklaring: Här accepterar metoden printOnlyIntegerClassorSuperClass endast Integer eller dess superklasser (som Number). Om du försöker skicka en lista med Double ger det ett kompileringsfel eftersom Double inte är en superklass av Integer.

ny rad i python

Notera: Använd förläng jokertecken när du vill få ut värden ur en struktur och superjokertecken när du lägger in värden i en struktur. Använd inte jokertecken när du får och sätter värden i en struktur. Du kan ange en övre gräns för ett jokertecken eller så kan du ange en nedre gräns men du kan inte ange båda.

3. Obegränsat jokertecken

Denna jokerteckentyp anges med jokertecken (?) till exempel List. Detta kallas en lista över okända typer. Dessa är användbara i följande fall -

  • När du skriver en metod som kan användas med funktionalitet som tillhandahålls i klassen Object.
  • När koden använder metoder i den generiska klassen beror det inte på typparametern

Genomförande:

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);  } } 

Produktion
[1 2 3] [1.1 2.2 3.3]


Skapa frågesport