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(List extends Number>lista)
databasdesign i dbms
Genomförande:
Javaimport 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 extends Number>. 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: super A>.
rdbms normalisering
Syntax: Samlingstyp super A>
Genomförande:
Javaimport 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:
Javaimport 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]