Hoy, cuando estaba revisando el código fuente, descubrí la clase java.lang.void. ¿Cuál es la función de esto?
Compruébalo primero a través del código fuente
paquete java.lang;/** * La clase {@code void} es una clase de marcador de posición inestacable para mantener una referencia * al objeto {@code class} que representa la palabra clave java * void. * * @author no contado * @since jdk1.1 * /public finalClass void { /** * El objeto {@code class} que representa el pseudo-type correspondiente a * la palabra clave {@code void}. */ @Suppleswarnings ("sin verificar") public static final class <Void> type = (class <void>) class.getPrimitIVeClass ("void"); / * * La clase vacía no puede ser instanciada. */ private void () {}}En el código fuente se encuentra que esta clase es definitiva, no puede ser heredada, y la construcción es privada y no puede ser nueva.
Entonces, ¿cuál es la función de esta categoría?
Aquí está el código fuente de la clase Java.Lang.intenger primero
Todos sabemos que la clase de envoltura de int es java.lang.integer
De esto podemos ver que java.lang.integer es la clase de envoltura de int.
Del mismo modo, a través del siguiente código fuente de java.lang.void, podemos ver que java.lang.void es una clase de envoltura para la palabra clave vacía.
Public static final Clase <Void> type = (clase <Void>) class.getPrimitIVeClass ("void");Uso de vacío
La clase Void es una clase de marcador de posición no instable. Si el método devuelve un tipo de vacío, entonces el método solo puede devolver un tipo nulo.
Los ejemplos son los siguientes:
public void test () {return null;}Use el escenario 1:
Future <Void> F = Pool.submit (new Callable () {@Override public void call () lanza la excepción {...... return null;}});Por ejemplo, utilizando la interfaz llamable, la interfaz debe devolver un valor, pero no hay datos que se devuelvan después de la ejecución real. En este momento, puede usar el tipo de vacío como tipo de retorno.
Use el escenario 2:
Refleja todos los métodos con valor de retorno nulo.
Public Class Test {public void hello () {} public static void main (string args []) {for (método método: test.class.getMethods ()) {if (método.getReturnType (). Equals (void.type)) {system.println (método.getName ()); }}}}Resultados de la ejecución:
mainhellowhaiwaitwaitnotifynotifyall
PS: lo siguiente presenta la comparación y el uso de java.lang.void y vacío
La palabra clave vacía significa que la función no devuelve el resultado y es una palabra clave en Java.
java.lang.void es un tipo. Por ejemplo, asigne un valor de NULL a una referencia nula.
Vacío nil = nulo;
A través del código de la clase vacía, podemos ver que el tipo de vacío no puede ser heredado o instanciado.
Public FinalClass void { /** * El objeto {@code class} que representa el pseudo-type correspondiente a * la palabra clave {@code void}. */ @Suppleswarnings ("sin verificar") public static final class <Void> type = (class <void>) class.getPrimitIVeClass ("void"); / * * La clase vacía no puede ser instanciada. */ private void () {}}Nulo como resultado de retorno de una función indica que la función devuelve nulo (excepto que NULL no puede devolver otros tipos).
Función void (int a, int b) {// hacer algo return null; }Antes de que aparecieran los genéricos, el vacío se usaba generalmente en la reflexión. Por ejemplo, el siguiente código imprime el nombre del método del tipo de retorno vacío.
Public Class Test {public void print (String v) {} public static void main (string args []) {for (método método: test.class.getMethods ()) {if (método.getReturnType (). Equals (void.type)) {System.out.println (método.getName ()); }}}} Después de que aparezcan los genéricos, el tipo de vacío se utilizará en algunos escenarios. Por ejemplo, Future<T> se usa para guardar los resultados. El método GET de Future devolverá el resultado (Tipo T).
Pero, ¿qué pasa si la operación no devuelve un valor? En este caso, puede estar representado por Future<Void> . Cuando se calcula el resultado después de llamar a Get, devolverá NULL después de regresar.
Además, el vacío también se usa en mapas sin valor. Por ejemplo, Map<T,Void> , por lo que MAP tendrá la misma función que Set<T> .
Por lo tanto, cuando usa genéricos, la función no necesita devolver el resultado o un objeto no necesita el valor. Esto puede estar representado por el tipo java.lang.void.
Resumir
Lo anterior es una explicación detallada del análisis de clase y el uso de java.lang.void introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!