Heim > Java > javaLernprogramm > Hauptteil

Wie überschreibe ich die Methode findClass() in Java?

WBOY
Freigeben: 2023-04-22 22:40:22
nach vorne
1144 Leute haben es durchsucht

Methodenbeschreibung

1 Verwenden Sie die Methode findClass(String), um die Klassenbytecodedatei neu zu laden, da die Methode ffindClass in ClassLoader durch protected geändert wird. kann nur Unterklassen aufrufen, implementiert keine Methoden und löst nur eine ClassNotFoundException-Ausnahme aus.

2. Schreiben Sie die findClass-Methode so um, dass sie von externen Objekten aufgerufen werden kann, und klassifizieren Sie den Logikcode der Bytecode-Datei.

Beispiel

package com;
import java.io.InputStream;
import java.net.URL;
public class MyClassLoader extends ClassLoader{
    /**
     * 加载class文件
     * 重写此方法的目的是为了能让此方法被外部调用,父类的 findClass 是 protected 修饰的,只能被子类调用
     * @param name   类的全类名 示例: com.xd.User
     * @return
     * @throws ClassNotFoundException
     */
    @Override
    public Class<?> findClass(String name) throws ClassNotFoundException {
        try {
            // 获取class文件名称  去掉包路径
            String fileName = name.substring(name.lastIndexOf(".") + 1) + ".class";
            // 获取文件输入流
            InputStream is = this.getClass().getResourceAsStream(fileName);
            // 读取字节
            byte[] b = new byte[is.available()];
            is.read(b);
            // 将byte字节流解析成jvm能够识别的Class对象
            return defineClass(name, b, 0, b.length);
        } catch (Exception e) {
            throw new ClassNotFoundException();
        }
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie überschreibe ich die Methode findClass() in Java?. 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