logo

Helyettesítő karakterek Java nyelven

A Java Genericsben a helyettesítő karaktereket akkor használjuk, ha nem ismerjük a pontos típust. Lehetővé teszik rugalmas és újrafelhasználható kód írását. A helyettesítő karaktert egy ? (kérdőjel). A helyettesítő karaktereket főként a metódusparaméterekben használják a különböző általános típusok biztonságos elfogadására.

A Java helyettesítő karaktereinek típusai

1. Felső korlátos helyettesítő karakterek

Ezeket a helyettesítő karaktereket akkor használhatjuk, ha enyhíteni szeretnénk egy változóra vonatkozó korlátozásokat. Tegyük fel például, hogy egy listán működő metódust szeretne írni< Integer >Lista< Double >és List< Number >ezt felső korlátos helyettesítő karakter használatával teheti meg. 

A felső határú helyettesítő karakter deklarálásához használja a helyettesítő karaktert ('?'), majd az extends kulcsszót, majd a felső korlátot. 



public static void add(Listlista)

javafx napfogyatkozáskor

Végrehajtás:

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

Kimenet
Total sum is:22.0 Total sum is:15.299999999999999

Magyarázat: A fenti programban a list1 Integer értékeket, a list2 pedig a Double értékeket tartalmazza. Mindkettő az összeg metódushoz kerül, amely helyettesítő karaktert használ. Ez azt jelenti, hogy bármilyen típusú listát el tud fogadni, amely a szám alosztálya, például egész vagy kettős.

2. Alsó korlátos helyettesítő karakterek

Ezt a helyettesítő karakter ('?') használatával fejezi ki, amelyet a szuper kulcsszó követ, majd az alsó korlát:

mátrixok a c programozásban

Szintaxis: Gyűjteménytípus

Végrehajtás: 

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

Kimenet
[4 5 6 7] [4 5 6 7]

Magyarázat: Itt a printOnlyIntegerClassorSuperClass metódus csak egész számot vagy szuperosztályait (például a számot) fogadja el. Ha megpróbálja átadni a Double listát, az fordítási idejű hibát ad, mivel a Double nem az egész számok szuperosztálya.

folytatási adattípusok

Jegyzet: Használja a kiterjesztett helyettesítő karaktert, ha értékeket szeretne kihozni egy struktúrából, és szuper helyettesítő karaktert, ha értékeket helyez el egy struktúrába. Ne használjon helyettesítő karaktert, amikor értékeket kap és helyez be egy szerkezetbe. Megadhat felső korlátot a helyettesítő karakterekhez, vagy megadhat alsó korlátot, de mindkettőt nem.

3. Korlátlan helyettesítő karakter

Ez a helyettesítő karakter típus a helyettesítő karakter (?) használatával van megadva, például Lista. Ezt ismeretlen típusok listájának nevezzük. Ezek a következő esetekben hasznosak:

  • Amikor olyan metódust írunk, amely az Object osztályban biztosított funkciókkal használható.
  • Amikor a kód olyan metódusokat használ az általános osztályban, amelyek nem függenek a típusparamétertől

Végrehajtás:

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

Kimenet
[1 2 3] [1.1 2.2 3.3]


Kvíz létrehozása