logo

Curingas em Java

Em Java Generics, curingas são usados ​​quando você não sabe o tipo exato. Eles permitem que você escreva código flexível e reutilizável. O curinga é representado por um ? (ponto de interrogação). Os curingas são usados ​​principalmente em parâmetros de métodos para aceitar diferentes tipos genéricos com segurança.

Tipos de curingas em Java

1. Curingas de limite superior

Esses curingas podem ser usados ​​quando você deseja relaxar as restrições de uma variável. Por exemplo, digamos que você queira escrever um método que funcione em List< Integer >Lista< Double >e lista< Number >você pode fazer isso usando um curinga com limite superior. 

Para declarar um curinga de limite superior, use o caractere curinga ('?') seguido pela palavra-chave extends seguida por seu limite superior. 



public static void add(Listalista)

conversão de int para string

Implementação:

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

Saída
Total sum is:22.0 Total sum is:15.299999999999999

Explicação: No programa acima, list1 contém valores inteiros e list2 contém valores duplos. Ambos são passados ​​para o método sum que usa um curinga. Isso significa que ele pode aceitar qualquer lista de um tipo que seja uma subclasse de Number, como Integer ou Double.

2. Curingas com limite inferior

É expresso usando o caractere curinga ('?') seguido pela palavra-chave super seguida por seu limite inferior:

diferenciação parcial em látex

Sintaxe: Tipo de coleção

Implementação: 

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

Saída
[4 5 6 7] [4 5 6 7]

Explicação: Aqui o método printOnlyIntegerClassorSuperClass aceita apenas Integer ou suas superclasses (como Number). Se você tentar passar uma lista de Double, ocorrerá um erro em tempo de compilação porque Double não é uma superclasse de Integer.

Observação: Use o curinga estendido quando quiser obter valores de uma estrutura e o supercuringa ao colocar valores em uma estrutura. Não use curinga ao obter e colocar valores em uma estrutura. Você pode especificar um limite superior para um curinga ou um limite inferior, mas não pode especificar ambos.

3. Curinga ilimitado

Este tipo de curinga é especificado usando o caractere curinga (?) por exemplo Lista. Isso é chamado de lista de tipos desconhecidos. Eles são úteis nos seguintes casos -

o que é uma pilha em java
  • Ao escrever um método que pode ser empregado usando a funcionalidade fornecida na classe Object.
  • Quando o código usa métodos da classe genérica que não dependem do parâmetro de tipo

Implementação:

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

Saída
[1 2 3] [1.1 2.2 3.3]


Criar questionário