logo

Jokertegn i Java

I Java bruges generiske jokertegn, når du ikke kender den nøjagtige type. De lader dig skrive fleksibel og genbrugelig kode. Jokertegnet er repræsenteret af et ? (spørgsmålstegn). Jokertegn bruges hovedsageligt i metodeparametre for at acceptere forskellige generiske typer sikkert.

Typer af jokertegn i Java

1. Jokertegn med øvre grænse

Disse jokertegn kan bruges, når du vil slække på restriktionerne for en variabel. Sig for eksempel, at du vil skrive en metode, der virker på List< Integer >Liste< Double >og Liste< Number >du kan gøre dette ved at bruge et jokertegn med øvre grænse. 

For at erklære et jokertegn med øvre grænse skal du bruge jokertegnet ('?') efterfulgt af nøgleordet extends efterfulgt af dets øvre grænse. 



offentlig statisk void tilføjelse(Listliste)

hukommelsesudskiftning

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

Produktion
Total sum is:22.0 Total sum is:15.299999999999999

Forklaring: I ovenstående program indeholder liste1 heltalsværdier og liste2 indeholder dobbelte værdier. Begge overføres til summetoden, som bruger et jokertegn. Dette betyder, at den kan acceptere en hvilken som helst liste af en type, der er en underklasse af tal som heltal eller dobbelt.

2. Lavere afgrænsede jokertegn

Det udtrykkes ved hjælp af jokertegnet ('?') efterfulgt af supernøgleordet efterfulgt af dets nedre grænse:

1 million tal

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

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

Forklaring: Her accepterer metoden printOnlyIntegerClassorSuperClass kun Integer eller dets superklasser (som Number). Hvis du forsøger at sende en liste over Double giver det en kompileringsfejl, fordi Double ikke er en superklasse af Integer.

sammenføjninger og sammenføjningstyper

Note: Brug udvide jokertegn, når du ønsker at få værdier ud af en struktur og super jokertegn, når du sætter værdier i en struktur. Brug ikke jokertegn, når du får og sætter værdier i en struktur. Du kan angive en øvre grænse for et jokertegn, eller du kan angive en nedre grænse, men du kan ikke angive begge.

3. Ubundet jokertegn

Denne jokertegnstype er angivet ved hjælp af jokertegnet (?) for eksempel List. Dette kaldes en liste over ukendte typer. Disse er nyttige i følgende tilfælde -

  • Når du skriver en metode, der kan anvendes ved hjælp af funktionalitet, der leveres i klassen Object.
  • Når koden bruger metoder i den generiske klasse, afhænger det ikke af 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);  } } 

Produktion
[1 2 3] [1.1 2.2 3.3]


Opret quiz