logo

Zamjenski znakovi u Javi

U Java Generics zamjenski znakovi se koriste kada ne znate točnu vrstu. Omogućuju vam pisanje fleksibilnog koda koji se može ponovno koristiti. Zamjenski znak predstavlja ? (znak pitanja). Zamjenski znakovi se uglavnom koriste u parametrima metode za sigurno prihvaćanje različitih generičkih tipova.

Vrste zamjenskih znakova u Javi

1. Gornje granice zamjenskih znakova

Ovi zamjenski znakovi mogu se koristiti kada želite ublažiti ograničenja na varijabli. Na primjer, recimo da želite napisati metodu koja radi na Listi< Integer >Popis< Double >i Popis< Number >to možete učiniti pomoću zamjenskog znaka s gornjom granicom. 

Za deklaraciju zamjenskog znaka s gornjom granicom upotrijebite zamjenski znak ('?') nakon kojeg slijedi ključna riječ extends nakon koje slijedi njena gornja granica. 



public static void add(Listpopis)

linkedlist i arraylist

Implementacija:

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

Izlaz
Total sum is:22.0 Total sum is:15.299999999999999

Obrazloženje: U gornjem programu list1 sadrži Integer vrijednosti, a list2 sadrži Double vrijednosti. Oba se prosljeđuju metodi zbroja koja koristi zamjenski znak. To znači da može prihvatiti bilo koji popis tipa koji je podklasa broja kao što je Integer ili Double.

2. Zamjenski znakovi donje granice

Izražava se pomoću zamjenskog znaka ('?') iza kojeg slijedi ključna riječ super nakon koje slijedi donja granica:

java sortiranje oblačića

Sintaksa: Vrsta zbirke

Implementacija: 

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

Izlaz
[4 5 6 7] [4 5 6 7]

Obrazloženje: Ovdje metoda printOnlyIntegerClassorSuperClass prihvaća samo Integer ili njegove superklase (kao što je Number). Ako pokušate proslijediti popis Double, javlja se pogreška u vremenu prevođenja jer Double nije nadklasa Integera.

Bilješka: Koristite prošireni zamjenski znak kada želite izvući vrijednosti iz strukture i super zamjenski znak kada stavljate vrijednosti u strukturu. Nemojte koristiti zamjenski znak kada dobivate i stavljate vrijednosti u strukturu. Možete navesti gornju granicu za zamjenski znak ili možete navesti donju granicu, ali ne možete navesti oboje.

3. Neograničeni zamjenski znak

Ova vrsta zamjenskog znaka navedena je pomoću zamjenskog znaka (?), na primjer Popis. Ovo se zove popis nepoznatih tipova. Oni su korisni u sljedećim slučajevima -

glavni program u Javi
  • Kada pišete metodu koja se može koristiti korištenjem funkcionalnosti u klasi Object.
  • Kada kod koristi metode u generičkoj klasi koja ne ovisi o parametru tipa

Implementacija:

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

Izlaz
[1 2 3] [1.1 2.2 3.3]


Napravi kviz