logo

Comodines en Java

En Java genéricos, los comodines se utilizan cuando no se sabe el tipo exacto. Te permiten escribir código flexible y reutilizable. El comodín está representado por ? (signo de interrogación). Los comodines se utilizan principalmente en los parámetros del método para aceptar diferentes tipos genéricos de forma segura.

Tipos de comodines en Java

1. Comodines de límite superior

Estos comodines se pueden utilizar cuando desee relajar las restricciones de una variable. Por ejemplo, digamos que desea escribir un método que funcione en Lista< Integer >Lista< Double >y lista< Number >puedes hacer esto usando un comodín de límite superior. 

Para declarar un comodín de límite superior, utilice el carácter comodín ('?') seguido de la palabra clave extends seguida de su límite superior. 



agregar vacío estático público (listalista)

formatear fecha en cadena

Implementación:

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

Producción
Total sum is:22.0 Total sum is:15.299999999999999

Explicación: En el programa anterior, la lista1 contiene valores enteros y la lista2 contiene valores dobles. Ambos se pasan al método de suma que utiliza un comodín.. Esto significa que puede aceptar cualquier lista de un tipo que sea una subclase de Número como Integer o Double.

2. Comodines con límites inferiores

Se expresa utilizando el carácter comodín ('?') seguido de la palabra clave super seguida de su límite inferior:

objeto java a json

Sintaxis: Tipo de colección

Implementación: 

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

Producción
[4 5 6 7] [4 5 6 7]

Explicación: Aquí el método printOnlyIntegerClassorSuperClass acepta solo Integer o sus superclases (como Number). Si intenta pasar una lista de Double, obtendrá un error en tiempo de compilación porque Double no es una superclase de Integer.

Nota: Utilice el comodín extendido cuando desee obtener valores de una estructura y el super comodín cuando coloque valores en una estructura. No utilice comodines cuando obtenga y coloque valores en una estructura. Puede especificar un límite superior para un comodín o puede especificar un límite inferior, pero no puede especificar ambos.

3. Comodín ilimitado

Este tipo de comodín se especifica mediante el carácter comodín (?), por ejemplo, Lista. Esto se llama lista de tipos desconocidos. Estos son útiles en los siguientes casos:

leer archivo excel en java
  • Al escribir un método que se puede emplear utilizando la funcionalidad proporcionada en la clase Objeto.
  • Cuando el código usa métodos en la clase genérica que no depende del parámetro de tipo

Implementación:

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

Producción
[1 2 3] [1.1 2.2 3.3]


Crear cuestionario