這篇文章將為大家詳細講解有關怎么在java中重寫findClass方法,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

目前成都創新互聯已為上千的企業提供了網站建設、域名、網頁空間、網站托管運營、企業網站設計、朝天網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。
1、方法說明
使用findClass(String)方法,可以重新加載class字節碼文件,因為在ClassLoader中,ffindClass方法由protected修飾,只能調用被子類,沒有實現方法,只拋出一個ClassNotFoundException的異常。
需要重寫findClass的方法,這樣就可以被外部對象調用,并class字節碼文件的邏輯代碼。
2、實例
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();
}
}
}關于怎么在java中重寫findClass方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網頁題目:怎么在java中重寫findClass方法
文章源于:http://www.yijiale78.com/article12/jdoggc.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、外貿建站、面包屑導航、云服務器、電子商務、軟件開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯