logo

Jokerimerkit Javassa

Java Genericsissä jokerimerkkejä käytetään, kun et tiedä tarkkaa tyyppiä. Niiden avulla voit kirjoittaa joustavaa ja uudelleen käytettävää koodia. Jokerimerkkiä edustaa ? (kysymysmerkki). Jokerimerkkejä käytetään pääasiassa menetelmäparametreissa erilaisten yleistyyppien hyväksymiseksi turvallisesti.

Jokerimerkkien tyypit Javassa

1. Ylärajalliset jokerimerkit

Näitä yleismerkkejä voidaan käyttää, kun haluat lieventää muuttujan rajoituksia. Oletetaan esimerkiksi, että haluat kirjoittaa menetelmän, joka toimii luettelossa< Integer >Lista< Double >ja Lista< Number >voit tehdä tämän käyttämällä ylärajattua jokerimerkkiä. 

Jos haluat ilmoittaa ylärajallisen yleismerkin, käytä yleismerkkiä ('?'), jota seuraa extens-avainsana ja sen yläraja. 



public static void add(Listlista)

Tarkista null javassa

Toteutus:

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

Lähtö
Total sum is:22.0 Total sum is:15.299999999999999

Selitys: Yllä olevassa ohjelmassa lista1 sisältää kokonaislukuarvot ja lista2 kaksinkertaiset arvot. Molemmat välitetään summamenetelmälle, joka käyttää jokerimerkkiä. Tämä tarkoittaa, että se voi hyväksyä minkä tahansa luettelon, joka on luvun alaluokka, kuten Kokonaisluku tai Double.

2. Alarajaiset jokerimerkit

Se ilmaistaan ​​käyttämällä yleismerkkiä ('?'), jota seuraa super-avainsana ja sen alaraja:

java-kuplalajittelu

Syntaksi: Kokoelman tyyppi

Toteutus: 

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

Lähtö
[4 5 6 7] [4 5 6 7]

Selitys: Tässä menetelmä printOnlyIntegerClassorSuperClass hyväksyy vain kokonaisluvun tai sen superluokat (kuten Number). Jos yrität välittää luettelon Double, se antaa käännösaikavirheen, koska Double ei ole kokonaislukujen superluokka.

java lambda esimerkki

Huomautus: Käytä laajennettua jokerimerkkiä, kun haluat saada arvot ulos rakenteesta, ja superjokerimerkkiä, kun lisäät arvoja rakenteeseen. Älä käytä jokerimerkkejä, kun hankit ja lisäät arvoja rakenteeseen. Voit määrittää jokerimerkille ylärajan tai voit määrittää alarajan, mutta et voi määrittää molempia.

3. Rajoittamaton jokerimerkki

Tämä jokerimerkkityyppi määritetään käyttämällä yleismerkkiä (?), esimerkiksi List. Tätä kutsutaan luetteloksi tuntemattomista tyypeistä. Ne ovat hyödyllisiä seuraavissa tapauksissa -

  • Kun kirjoitetaan menetelmää, jota voidaan käyttää Object-luokassa tarjotuilla toiminnoilla.
  • Kun koodi käyttää yleisen luokan menetelmiä, jotka eivät riipu tyyppiparametrista

Toteutus:

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

Lähtö
[1 2 3] [1.1 2.2 3.3]


Luo tietokilpailu