Das Spiel der Instanziierung von java.lang.Void

Bewirken

Dieser Artikel erstellt ein Objekt von java.lang.Void, Dies ist ein Artikel, der versucht hat, die Methode des Objekts aufzurufen.

Das Erstellen eines Objekts von "java.lang.Void" hat jedoch wahrscheinlich keinen Wert, es ist also nur ein Spiel.

Code

Ich habe auch einen Kommentar in den Kommentaren geschrieben.

import java.lang.reflect.Constructor;

public class CreateVoid {
    public static void main(String... args) throws Exception {
        //So erhalten Sie eine Klasse, indem Sie den Klassennamen als Zeichenfolge angeben
        Class<Void> voidClazz1 = (Class<Void>)Class.forName("java.lang.Void");
        Void o1 = getVoid(voidClazz1);

        //So erhalten Sie die Klasse von der tatsächlichen Methode
        Class<Void> voidClazz2 = (Class<Void>)CreateVoid.class.getMethod("voidMethod", new Class[]{}).getReturnType();
        Void o2 = getVoid(voidClazz2);

        System.out.println(o1);//java.lang.Void@1c6b6478
        //Da die Methode equals nicht überschrieben wird, ist sie immer falsch, wenn es sich um eine andere Instanz handelt.
        System.out.println(o1.equals(o2));//false
        System.out.println(o1.hashCode());//476800120
        System.out.println(o1.toString());//java.lang.Void@1c6b6478
        System.out.println(o1.getClass());//class java.lang.Void
    }

    //Wenn es nichtig ist, wird es ein primitiver Typ sein, also nichtig(=java.lang.Void)ist.
    public Void voidMethod(){return null;};

    //Class<Void>Erstellen Sie ein Void-Objekt aus
    private static Void getVoid(Class<Void> voidClazz) throws Exception {
        //Blick in die JDK-Quelle`private Void() {}`Und der Konstruktor ist privat, daher müssen Sie Folgendes tun
        //1.Schreiben Sie getDeclaredConstructor anstelle von getConstructor
        //2.Setzen Sie das Access-Flag auf true
        Constructor<?> declaredConstructor = voidClazz.getDeclaredConstructor(new Class[]{});
        declaredConstructor.setAccessible(true);
        return (Void)declaredConstructor.newInstance(new Object[]{});
    }
}

Recommended Posts

Das Spiel der Instanziierung von java.lang.Void
Die Welt der Clara-Regeln (2)
Beurteilung des Kalenders
Die Welt der Clara-Regeln (4)
Die Welt der Clara-Regeln (1)
Die Welt der Clara-Regeln (3)
Die Welt der Clara-Regeln (5)
Die Idee der schnellen Sortierung
Die Idee von jQuery
Über den Umgang mit Null
Informationen zur Beschreibung von Docker-compose.yml
Medianwert von drei Werten
Die Illusion der Objektorientierung
Über das Verhalten von Ruby Hash # ==
[Java] Löschen Sie die Elemente von List
Fortsetzung: Das Gleichnis von OOP (weggelassen)
Ändern Sie nur einen Teil des Textes
Verstehen Sie den grundlegenden Mechanismus von log4j2.xml
'% 02d' Was ist der% von% 2?
[Schienen] Überprüfen Sie den Inhalt des Objekts
Ersetzen Sie den Inhalt der Jar-Datei
Überprüfen Sie die Version von Cent OS
Erläuterung der Reihenfolge der Schienenrouten
Ich habe die Quelle von ArrayList gelesen, die ich gelesen habe
Die Grundlagen von SpringBoot + MyBatis + MySQL
Hinweis zum Pfad von request.getRequestDispatcher
Ich habe die Quelle von Integer gelesen
Dies und das von JDK
Überprüfen Sie den Migrationsstatus von Schienen
Die Geschichte von @ViewScoped, die Speicher verschlingt
Filtern Sie die Schwankungen der Rohdaten
Erklären der Spalten von Spree :: Taxonomy
Ein Memorandum über das FizzBuzz-Problem
Ich habe die Quelle von Long gelesen
Erklären Sie die Spalte von Spree :: Product
Verschiedene Methoden der String-Klasse
Informationen zur Rolle der Initialisierungsmethode
Denken Sie an die 7 Regeln von Optional
Holen Sie sich die ID der automatischen Nummerierung
Ich habe die Quelle von Short gelesen
Ich habe die Quelle von Byte gelesen
Reihenfolge der Verarbeitung im Programm
Ich habe die Quelle von String gelesen
Der Ursprung von Java-Lambda-Ausdrücken
[Ruby] Zeigt den Inhalt von Variablen an
Bildverarbeitung: Spielen wir mit dem Bild
Filtern Sie das Ergebnis von BindingResult [Spring]
Remote-Debugging von Cognos SDK
Informationen zur Protokollebene von java.util.logging.Logger
Die Geschichte der ersten Veröffentlichung der Android-App im Play Store.