最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

類加載器之URLClassLoader的簡單demo

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

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 對象了
		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)建對象
		Object ob = con.newInstance("小黑",12,50);
		//在調(diào)用 Dog 對象的 say 方法,返回對 Dog 對象自己的描述
		Method mtd0 = clazz.getMethod("say", new Class<?>[] {});  
		String dogSay = (String)mtd0.invoke(ob, new Object[] {});  
		System.out.println(dogSay);
		//再使用setter 方法,改變屬性  模擬 Dog 對象,逐漸長大,變胖  哈哈!
		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ī)里面的搭建的簡單的 nginx 服務(wù)器,也是看著別人的教程搭建的,很簡陋的一個(gè)服務(wù)器,哈哈。但是,這里足夠使用了,如果沒有條件,或者想簡單一點(diǎn),可以使用本地的文件系統(tǒng)。
使用 file:///jar包地址 這個(gè)替換就行了。

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

在這里插入圖片描述

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

運(yùn)行截圖

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

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

相關(guān)文章

  • java基于Des對稱加密算法實(shí)現(xiàn)的加密與解密功能詳解

    java基于Des對稱加密算法實(shí)現(xiàn)的加密與解密功能詳解

    這篇文章主要介紹了java基于Des對稱加密算法實(shí)現(xiàn)的加密與解密功能,結(jié)合實(shí)例形式詳細(xì)分析了Des加密算法的功能、原理、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-01-01
  • 從dubbo zookeeper注冊地址提取出zookeeper地址的方法

    從dubbo zookeeper注冊地址提取出zookeeper地址的方法

    今天小編就為大家分享一篇關(guān)于從dubbo zookeeper注冊地址提取出zookeeper地址的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • java synchronized加載加鎖-線程可重入詳解及實(shí)例代碼

    java synchronized加載加鎖-線程可重入詳解及實(shí)例代碼

    這篇文章主要介紹了java synchronized加載加鎖-線程可重入詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringBoot應(yīng)用jar包啟動(dòng)原理詳解

    SpringBoot應(yīng)用jar包啟動(dòng)原理詳解

    本文主要介紹了SpringBoot應(yīng)用jar包啟動(dòng)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Mybatis 逆向工程的三種方法詳解

    Mybatis 逆向工程的三種方法詳解

    這篇文章主要介紹了Mybatis 逆向工程的三種方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • SpringBoot快速搭建web項(xiàng)目詳細(xì)步驟總結(jié)

    SpringBoot快速搭建web項(xiàng)目詳細(xì)步驟總結(jié)

    這篇文章主要介紹了SpringBoot快速搭建web項(xiàng)目詳細(xì)步驟總結(jié) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • JNDI在JavaEE中的角色_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    JNDI在JavaEE中的角色_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了JNDI在JavaEE中的角色,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • springboot aop切到service層,不生效問題

    springboot aop切到service層,不生效問題

    這篇文章主要介紹了springboot aop切到service層,不生效問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 將Java項(xiàng)目打包成可執(zhí)行的jar包

    將Java項(xiàng)目打包成可執(zhí)行的jar包

    這篇文章主要介紹了將Java項(xiàng)目打包成可執(zhí)行的jar包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 排查Failed?to?validate?connection?com.mysql.cj.jdbc.ConnectionImpl

    排查Failed?to?validate?connection?com.mysql.cj.jdbc.Connec

    這篇文章主要介紹了Failed?to?validate?connection?com.mysql.cj.jdbc.ConnectionImpl問題排查,具有很好的參考價(jià)值,希望對大家有所幫助
    2023-02-02

最新評(píng)論

平顺县| 峨眉山市| 视频| 亚东县| 娄底市| 宜兰市| 万载县| 普格县| 云安县| 阿拉善右旗| 南漳县| 南华县| 区。| 平乡县| 龙南县| 黄骅市| 龙游县| 静安区| 获嘉县| 镇赉县| 渭源县| 丰宁| 吉木乃县| 任丘市| 潜江市| 漠河县| 那坡县| 手游| 米脂县| 泰州市| 保德县| 丹阳市| 红原县| 二手房| 洛宁县| 改则县| 高邑县| 赣榆县| 双桥区| 库车县| 大新县|