Volver a la página principal
sábado 12 octubre 2024
6

Diferencia en Java entre '.class' y '::new'

En Java, .class y ::new son dos operadores con funciones muy distintas. Mientras que .class se usa para obtener la referencia del objeto Class de un tipo, ::new es un método de referencia que se usa para crear instancias de clases.

Operador .class

El operador .class se utiliza para obtener la referencia a la definición de clase en tiempo de ejecución. Es útil cuando se trabaja con reflexión, ya que permite acceder a información sobre la clase sin crear instancias de ella.

Ejemplo:

Class<String> claseString = String.class;

En este ejemplo, String.class devuelve la referencia a la clase String, que luego puede ser utilizada para acceder a métodos y propiedades de reflexión, como getMethods() o getFields().

Operador ::new

El operador ::new es una referencia a un constructor y permite simplificar la creación de instancias de clases, especialmente en programación funcional (como con lambdas). Este operador puede referirse tanto a constructores sin argumentos como a aquellos con parámetros.

Ejemplo:

Supplier<String> crearString = String::new;

En este caso, String::new es una referencia al constructor de String sin parámetros. Cada vez que se llame a crearString.get(), se creará una nueva instancia de String.

Algunos ejemplos

1. Usando .class con reflexión:

Class<Integer> claseInteger = Integer.class;
   System.out.println(claseInteger.getName()); // Salida: java.lang.Integer

2. Usando ::new para construir objetos:

Supplier<ArrayList<String>> nuevaLista = ArrayList::new;
   ArrayList<String> lista = nuevaLista.get();

Para más información, puedes consultar la documentación oficial de Oracle.

Etiquetas:
java
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer