Heim > Java > javaLernprogramm > Umschreiben: Welche Möglichkeiten gibt es, Java-Klassen zu referenzieren?

Umschreiben: Welche Möglichkeiten gibt es, Java-Klassen zu referenzieren?

PHPz
Freigeben: 2023-05-10 09:28:08
nach vorne
1206 Leute haben es durchsucht

1. Der aktive Verweis auf eine Klasse führt definitiv zur Initialisierung der Klasse. Wenn die virtuelle Maschine startet, initialisieren Sie zuerst die Klasse, in der sich die Hauptmethode befindet.

Instanziieren Sie ein Objekt der Klasse.

Rufen Sie die statischen Mitglieder (außer Endkonstanten) und statischen Methoden der Klasse auf.

Verwenden Sie die Methode von Java .lang.reflect-Paket zum Ausführen des Klassen-Reflection-Aufrufs

Wenn beim Initialisieren einer Klasse ihre übergeordnete Klasse nicht initialisiert wurde, wird ihre übergeordnete Klasse zuerst initialisiert

2 Passive Referenz der Klasse, keine Initialisierung der Klasse wird auftreten

Beim Zugriff auf ein statisches Feld wird nur die Klasse initialisiert, die dieses Feld tatsächlich deklariert. Beispiel: Wenn über eine Unterklasse auf statische Variablen der übergeordneten Klasse verwiesen wird, wird die Unterklasse nicht initialisiert.

Das Definieren von Klassenreferenzen über Arrays löst nicht die Initialisierung dieser Klasse aus dieser Klasse (Konstanten befinden sich in der Linkphase) Sie wird im Konstantenpool der aufrufenden Klasse gespeichert)

Instanz

package com.volcano.reflection;
//什么时候会发生类的初始化,除了第一个注释一直开着,其他都要独立打开测试,否则不准确
public class TestReflection3 {
    static {
        //1.虚拟机启动就会最先初始化main方法所在的类 会
        System.out.println("main方法被加载");
    }
    public static void main(String[] args) throws ClassNotFoundException {
        //2.实例化一个对象 会
        //new Father();
        //3.调用类的静态成员(除了final常量)和静态方法 会
        //System.out.println(Son.a);
        //4.使用java.lang.reflect包的方法对类进行反射调用 会
        //Class cls = Class.forName("com.volcano.reflection.Father");
        //5.当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类 会
        //new Son();
 
        //6.当访问一个静态域时,只有真正声明这个域的类才会被初始化 不会
        //System.out.println(Father.a);//两个都是只加载Father
        //System.out.println(Son.a);//因为a是Father的静态成员
        //7.通过数组定义类引用,不会触发此类的初始化 不会
        //Father[] fathers = new Father[10];
        //8.引用常量不会触发此类的初始化 不会
        //System.out.println(Father.B);
 
    }
}
class Father{
    static {
        System.out.println("Father被加载");
    }
    static int a=100;
    static final int B = 300;
}
class Son extends Father{
    static {
        System.out.println("Son被加载");
    }
    static int c=200;
 
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonUmschreiben: Welche Möglichkeiten gibt es, Java-Klassen zu referenzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage