logo

Jokertegn i Java

I Java Generics brukes jokertegn når du ikke vet den eksakte typen. De lar deg skrive fleksibel og gjenbrukbar kode. Jokertegnet er representert av en ? (spørsmålstegn). Jokertegn brukes hovedsakelig i metodeparametere for å akseptere forskjellige generiske typer trygt.

Typer jokertegn i Java

1. Jokertegn med øvre grense

Disse jokertegnene kan brukes når du vil lempe på restriksjonene på en variabel. For eksempel si at du vil skrive en metode som fungerer på List< Integer >Liste< Double >og Liste< Number >du kan gjøre dette ved å bruke et jokertegn med øvre grense. 

For å deklarere et jokertegn med øvre grense, bruk jokertegnet ('?') etterfulgt av extends-nøkkelordet etterfulgt av øvre grense. 



offentlig statisk void add(Listliste)

hvordan konvertere streng til heltall

Implementering:

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

Produksjon
Total sum is:22.0 Total sum is:15.299999999999999

Forklaring: I programmet ovenfor inneholder liste1 heltallsverdier og liste2 inneholder doble verdier. Begge sendes til summetoden som bruker et jokertegn. Dette betyr at den kan godta en hvilken som helst liste av en type som er en underklasse av Number som heltall eller dobbel.

2. Nedre avgrensede jokertegn

Det uttrykkes ved hjelp av jokertegnet ('?') etterfulgt av supernøkkelordet etterfulgt av dets nedre grense:

1 million tall

Syntaks: Samlingstype

Implementering: 

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

Produksjon
[4 5 6 7] [4 5 6 7]

Forklaring: Her aksepterer metoden printOnlyIntegerClassorSuperClass bare Integer eller dets superklasser (som Number). Hvis du prøver å sende en liste over Double, gir det en kompileringstidsfeil fordi Double ikke er en superklasse av Integer.

sammenføyninger og sammenføyningstyper

Note: Bruk forleng jokertegn når du ønsker å få verdier ut av en struktur og superjokertegn når du setter verdier i en struktur. Ikke bruk jokertegn når du får og legger verdier i en struktur. Du kan spesifisere en øvre grense for et jokertegn, eller du kan angi en nedre grense, men du kan ikke spesifisere begge.

3. Ubegrenset jokertegn

Denne jokertegntypen er spesifisert ved å bruke jokertegnet (?) for eksempel List. Dette kalles en liste over ukjente typer. Disse er nyttige i følgende tilfeller -

  • Når du skriver en metode som kan brukes ved hjelp av funksjonalitet i Object-klassen.
  • Når koden bruker metoder i den generiske klassen, avhenger det ikke av typeparameteren

Implementering:

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

Produksjon
[1 2 3] [1.1 2.2 3.3]


Lag quiz