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.
.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.
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()
.
::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.
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
.
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.
Jorge García
Fullstack developer