欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一個(gè)簡(jiǎn)單的類加載器URLClassLoader案例

 更新時(shí)間:2023年04月06日 10:09:43   作者:CrazyDragon_King  
這篇文章主要介紹了一個(gè)簡(jiǎn)單的類加載器URLClassLoader案例,這里寫了一個(gè)小 demo,來(lái)加深對(duì)于反射的理解,需要的朋友可以參考下

類加載器之URLClassLoader的簡(jiǎn)單demo

最近,看了一點(diǎn)反射相關(guān)的知識(shí),感覺(jué)Java 的知識(shí)還有很多需要學(xué)習(xí)的,這也是一個(gè)很大的挑戰(zhàn)吧。
這里寫了一個(gè)小 demo,來(lái)加深對(duì)于反射的理解。

public class Test {
	public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException {
		URL[] urls = new URL[] {new URL("http://192.168.119.132:8080/images/animal.jar")};
		URLClassLoader classLoader = new URLClassLoader(urls);
		//加載類以后就可以得到 Class 對(duì)象了
		Class<?> clazz = classLoader.loadClass("com.learn.animal.Dog");
		classLoader.close();  //加載完類以后就可以刪除了。
		//關(guān)閉 classLoader, 否則會(huì)造成 資源泄露  Resource leak
		//這里不使用默認(rèn)的構(gòu)造器,使用帶參數(shù)的構(gòu)造器 獲取特殊的構(gòu)造器
		Constructor<?> con = clazz.getDeclaredConstructor(String.class, int.class, int.class);
		//使用構(gòu)造器創(chuàng)建對(duì)象
		Object ob = con.newInstance("小黑",12,50);
		//在調(diào)用 Dog 對(duì)象的 say 方法,返回對(duì) Dog 對(duì)象自己的描述
		Method mtd0 = clazz.getMethod("say", new Class<?>[] {});  
		String dogSay = (String)mtd0.invoke(ob, new Object[] {});  
		System.out.println(dogSay);
		//再使用setter 方法,改變屬性  模擬 Dog 對(duì)象,逐漸長(zhǎng)大,變胖  哈哈!
		System.out.println("Three years later......");
		Method mtd1 = clazz.getMethod("setAge", int.class);
		mtd1.invoke(ob, 15);
		Method mtd2 = clazz.getMethod("setWeight", int.class);
		mtd2.invoke(ob, 70);
		//注意這些方法是有返回值的!  返回值都是 Object 類型,需要自己強(qiáng)轉(zhuǎn)類型
		dogSay = (String)mtd0.invoke(ob, new Object[] {});  
		System.out.println(dogSay);
		System.out.println("It's over!");
	}
}

這里的 URL 資源,我用的是虛擬機(jī)里面的搭建的簡(jiǎn)單的 nginx 服務(wù)器,也是看著別人的教程搭建的,很簡(jiǎn)陋的一個(gè)服務(wù)器,哈哈。但是,這里足夠使用了,如果沒(méi)有條件,或者想簡(jiǎn)單一點(diǎn),可以使用本地的文件系統(tǒng)。
使用 file:///jar包地址 這個(gè)替換就行了。

這里使用的 jar 包也很簡(jiǎn)單,但是我直接打成了 jar 包,只有 class 文件了,我反編譯以下,把代碼圖片貼出來(lái)吧。
這個(gè)反編譯不是全部代碼,但是細(xì)節(jié)很簡(jiǎn)單,只有一個(gè) say() 方法,可以參照下面的運(yùn)行截圖,補(bǔ)全。

在這里插入圖片描述

然后是運(yùn)行截圖,注意我這里這個(gè) -encoding utf-8 是指定使用編碼字符集,因?yàn)閏md里面執(zhí)行代碼,如果有中文可能無(wú)法通過(guò)編譯。

運(yùn)行截圖

總結(jié):Java 的 URLClassLoader 簡(jiǎn)單使用也不是那么復(fù)雜,雖然技術(shù)本身很復(fù)雜,但是學(xué)習(xí)也不是一蹴而就的,學(xué)習(xí)也是一個(gè)過(guò)程,保持進(jìn)步,繼續(xù)努力。

到此這篇關(guān)于一個(gè)簡(jiǎn)單的類加載器URLClassLoader案例的文章就介紹到這了,更多相關(guān)類加載器URLClassLoader案例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot自定義stater啟動(dòng)流程

    springboot自定義stater啟動(dòng)流程

    這篇文章主要介紹了springboot自定義stater啟動(dòng)流程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 使用@RequestBody傳遞多個(gè)不同對(duì)象方式

    使用@RequestBody傳遞多個(gè)不同對(duì)象方式

    這篇文章主要介紹了使用@RequestBody傳遞多個(gè)不同對(duì)象方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SWT(JFace) Menu、Bar...體驗(yàn)代碼

    SWT(JFace) Menu、Bar...體驗(yàn)代碼

    SWT(JFace)體驗(yàn)之Menu、Bar實(shí)現(xiàn)代碼。
    2009-06-06
  • Feign如何使用protobuf的類作為參數(shù)調(diào)用

    Feign如何使用protobuf的類作為參數(shù)調(diào)用

    這篇文章主要介紹了Feign如何使用protobuf的類作為參數(shù)調(diào)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 字符串轉(zhuǎn)float運(yùn)算 float轉(zhuǎn)字符串的方法

    Java 字符串轉(zhuǎn)float運(yùn)算 float轉(zhuǎn)字符串的方法

    今天小編就為大家分享一篇Java 字符串轉(zhuǎn)float運(yùn)算 float轉(zhuǎn)字符串的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 在java上使用亞馬遜云儲(chǔ)存方法

    在java上使用亞馬遜云儲(chǔ)存方法

    這篇文章主要介紹了在java上使用亞馬遜云儲(chǔ)存方法,首先寫一個(gè)配置類,寫一個(gè)controller接口調(diào)用方法存儲(chǔ)文件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-01-01
  • java讀取resource目錄下文件的方法示例

    java讀取resource目錄下文件的方法示例

    這篇文章主要介紹了利用java讀取resource目錄下文件的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考借鑒,需要的朋友們下面來(lái)一起看看吧。
    2017-02-02
  • Java基礎(chǔ)之內(nèi)部類與代理知識(shí)總結(jié)

    Java基礎(chǔ)之內(nèi)部類與代理知識(shí)總結(jié)

    今天帶大家復(fù)習(xí)Java的基礎(chǔ)知識(shí),文中有非常詳細(xì)的介紹及圖文示例,對(duì)正在學(xué)習(xí)Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Spring配置文件的拆分和整合過(guò)程分析

    Spring配置文件的拆分和整合過(guò)程分析

    在實(shí)際應(yīng)用里,隨著應(yīng)用規(guī)模的增加,系統(tǒng)中 Bean 數(shù)量也大量增加,導(dǎo)致配置文件非常龐大。為了避免這種情況的產(chǎn)生,提高配置文件的可讀性與可維護(hù)性,可以將Spring 配置文件分解成多個(gè)配置文件,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • Java線程中的用戶態(tài)和內(nèi)核態(tài)解讀

    Java線程中的用戶態(tài)和內(nèi)核態(tài)解讀

    這篇文章主要介紹了Java線程中的用戶態(tài)和內(nèi)核態(tài)解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論