Aujourd'hui, lorsque je vérifiais le code source, j'ai découvert la classe java.lang.void. Quelle est la fonction de cela?
Vérifiez-le d'abord via le code source
package java.lang; / ** * La classe {@code void} est une classe d'emplacements d'attente non insabilitée pour maintenir une référence * à l'objet {@code class} représentant le mot-clé Java * void. * * @Author Unpoussened * @Since jdk1.1 * / public finalclass void {/ ** * L'objet {@code classe} représentant le pseudo-type correspondant à * le mot-clé {@code void}. * / @SuppressWarnings ("Unchecked") public static final class <void> type = (class <void>) class.getPrimiTiveClass ("void"); / * * La classe void ne peut pas être instanciée. * / private void () {}}Il est constaté à partir du code source que cette classe est définitive, ne peut pas être héritée, et la construction est privée et ne peut pas être nouvelle.
Alors, quelle est la fonction de cette catégorie?
Voici le code source de la classe java.lang.integer d'abord
Nous savons tous que la classe Wrapper de INT est java.lang.integer
À partir de cela, nous pouvons voir que java.lang.integer est la classe wrapper de Int.
De même, grâce au code source suivant de java.lang.void, nous pouvons voir que java.lang.void est une classe de wrapper pour le mot-clé vide.
CLASSE FINAL STATIQUE PUBLIQUE <VOID> TYPE = (CLASS <VOID>) CLASS.GETPRIMITIVECLASS ("void");Vide utilisation
La classe de vide est une classe d'espace réservée non institable. Si la méthode renvoie un type de vide, la méthode ne peut renvoyer qu'un type nul.
Les exemples sont les suivants:
public void test () {return null;}Utilisez le scénario 1:
Future <Void> f = pool.submit (new Callable () {@Override public void call () lève une exception {...... return null;}});Par exemple, en utilisant l'interface appelée, l'interface doit renvoyer une valeur, mais il n'y a pas de données à retourner après l'exécution réelle. À l'heure actuelle, vous pouvez utiliser le type de vide comme type de retour.
Utilisez le scénario 2:
Refléter toutes les méthodes avec la valeur de retour void.
classe publique test {public void hello () {} public static void main (String args []) {for (méthode Method: test.class.getMethods ()) {if (method.getReturnType (). equals (void.type)) {system.out.println (méthode.getName ()); }}}}Résultats de l'exécution:
MainHellowaiwaitWaitnotifynotifyAll
PS: Ce qui suit introduit la comparaison et l'utilisation de java.lang.void et void
Le mot-clé void signifie que la fonction ne renvoie pas le résultat et est un mot-clé en Java.
java.lang.void est un type. Par exemple, attribuez une valeur nul à une référence vide.
Void nil = null;
Grâce au code de la classe Void, nous pouvons voir que le type de vide ne peut pas être hérité ou instancié.
public finalClass void {/ ** * L'objet {@code classe} représentant le pseudo-type correspondant à * le mot-clé {@code void}. * / @SuppressWarnings ("Unchecked") public static final class <void> type = (class <void>) class.getPrimiTiveClass ("void"); / * * La classe void ne peut pas être instanciée. * / private void () {}}Void car le résultat de retour d'une fonction indique que la fonction renvoie NULL (sauf que NULL ne peut pas renvoyer d'autres types).
Fonction void (int a, int b) {// faire quelque chose renvoie null; }Avant que les génériques n'apparaissent, le vide était généralement utilisé dans la réflexion. Par exemple, le code suivant imprime le nom de la méthode du type de retour void.
classe publique test {public void print (string v) {} public static void main (String args []) {for (méthode méthode: test.class.getMethods ()) {if (method.getReturnType (). equals (void.type)) {system.out.println (method.getName ()); }}}} Une fois les génériques apparaissant, le type de vide sera utilisé dans certains scénarios. Par exemple, Future<T> est utilisé pour enregistrer les résultats. La méthode GET de Future renvoie le résultat (type T).
Mais que se passe-t-il si l'opération ne renvoie pas de valeur? Dans ce cas, il peut être représenté par Future<Void> . Lorsque le résultat est calculé après l'appel GET, il retournera NULL après le retour.
De plus, le vide est également utilisé dans les cartes sans valeur. Par exemple, Map<T,Void> , donc la carte aura la même fonction que Set<T> .
Par conséquent, lorsque vous utilisez des génériques, la fonction n'a pas besoin de renvoyer le résultat ou un objet n'a pas besoin de la valeur. Cela peut être représenté par le type java.lang.void.
Résumer
Ce qui précède est une explication détaillée de l'analyse de classe et de l'utilisation de java.lang.void vous a présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!