privada - Clase interna anónima vacía en java
crear un objeto de una clase dentro de otra clase (2)
El propósito de esto es permitir que TypeToken
encuentre la superclase de la instancia, lo que preservará la información del argumento de tipo.
Por ejemplo, aunque un objeto ArrayList<String>
no sabe que su tipo de elemento es String
, debido al borrado, la información de la superclase no se pierde, por lo que la new ArrayList<String>{}
sabe que su superclase es ArrayList<String>
, no solo ArrayList
. TypeToken
usa esa técnica para representar un tipo genérico construido.
Estaba buscando en la biblioteca de Guayaba y me encontré con una clase interna anónima vacía en TypeToken
.
TypeToken<List<String>> stringListTok = new TypeToken<List<String>>() {};
¿Cuál es exactamente el uso de una clase interna anónima vacía y cuáles son los escenarios útiles donde puede ser útil?
Hay un uso, que la guayaba podría usar. Como saben, los tipos se pierden después de la compilación, pero si el tipo se especifica en el nivel de clase, no se pierde después de la compilación y se puede extraer por reflexión. Pondré el código para extraer el tipo en un minuto.
Editar No sé si el código es de alguna utilidad, pero aquí está
public class Reflect {
public static void main(String[] args) {
Super<String> aStringSuper = new Super<String>() {};
aStringSuper.method();
Super<List<Integer>> aListSuper = new Super<List<Integer>>() {};
aListSuper.method();
}
}
class Super<T> {
public void method() {
Type genericSuperclass = this.getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
for(Type type : parameterizedType.getActualTypeArguments()) {
System.out.println(type);
}
}
}