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

java實(shí)現(xiàn)靜默加載Class示例代碼

 更新時(shí)間:2017年10月17日 11:13:31   作者:蔣固金  
這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)靜默加載Class的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要介紹了關(guān)于java靜默加載Class的相關(guān)內(nèi)容,之所以有這篇文章,是因?yàn)橛袝r(shí)候在開發(fā)的時(shí)候,我們有這樣的場(chǎng)景,我們只想得到一個(gè)Class的基本信息,但是并不想觸發(fā)相關(guān)的靜態(tài)代碼塊,在之前的一篇《JAVA掃描包》文章中就用到了這種方式,我將其稱之為靜默加載,如果有專業(yè)的叫法,歡迎指正。

一般情況下,我們加載一個(gè)Class的時(shí)候會(huì)使用Class.forName(String name)方法,該方法會(huì)返回一個(gè)Class對(duì)象,同時(shí)會(huì)觸發(fā)該類中的靜態(tài)代碼塊,舉個(gè)例子:

我們先來編寫一個(gè)只包含靜態(tài)代碼塊的Bean類。

package com.jinggujin.classloader;
public class Bean
{
 static
 {
  System.err.println("static code block.");
 }
}

使用err流是為了讓信息及時(shí)輸出,使用out會(huì)有緩存,可能會(huì)導(dǎo)致輸出信息順序錯(cuò)亂

然后編寫測(cè)試方法進(jìn)行測(cè)試。

package test;

import org.junit.Test;

public class ClassLoaderTest
{
 @Test
 public void test() throws Exception
 {
  Class.forName("com.jinggujin.classloader.Bean");
 }
}

運(yùn)行觀察控制臺(tái)輸出:

static code block.

此時(shí)控制臺(tái)會(huì)輸出我們?cè)陟o態(tài)代碼塊中打印的內(nèi)容,這樣就證明了了在使用Class.forName(String name)會(huì)觸發(fā)靜態(tài)代碼塊,那么,要實(shí)現(xiàn)靜默加載,我們就不能用這種方式了,我們可以使用ClassLoader的loadClass(String name)方法進(jìn)行加載,該方法僅會(huì)加載類而不會(huì)觸發(fā)靜態(tài)代碼塊,同樣的編寫測(cè)試方法進(jìn)行測(cè)試。

package test;
import org.junit.Test;
public class ClassLoaderTest
{
 @Test
 public void test() throws Exception
 {
  Class<?> clazz = Thread.currentThread().getContextClassLoader().loadClass("com.jinggujin.classloader.Bean");
  System.err.println(clazz.getName());
 }
}

運(yùn)行觀察控制臺(tái)輸出:

com.jinggujin.classloader.Bean

我們發(fā)現(xiàn),在控制臺(tái)中僅輸出了我們打印的類名信息,而靜態(tài)代碼塊沒有執(zhí)行,除此之外,其實(shí)我們還可以使用Class.forName(String name)的重寫方法forName(String name, boolean initialize, ClassLoader loader) ,同樣可以達(dá)到靜默加載的效果。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Java如何獲取主機(jī)的基本信息詳解

    Java如何獲取主機(jī)的基本信息詳解

    最近遇到一個(gè)工作需求,上網(wǎng)查了一下怎樣在Java中獲取本機(jī)的ip和主機(jī)名,所以下面這篇文章主要給大家介紹了關(guān)于Java如何獲取主機(jī)的基本信息,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Java執(zhí)行SQL腳本文件到數(shù)據(jù)庫詳解

    Java執(zhí)行SQL腳本文件到數(shù)據(jù)庫詳解

    這篇文章主要為大家詳細(xì)介紹了Java執(zhí)行SQL腳本文件到數(shù)據(jù)庫的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 使用Mybatis如何實(shí)現(xiàn)多個(gè)控制條件查詢

    使用Mybatis如何實(shí)現(xiàn)多個(gè)控制條件查詢

    這篇文章主要介紹了使用Mybatis如何實(shí)現(xiàn)多個(gè)控制條件查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java反轉(zhuǎn)字符串和相關(guān)字符編碼的問題解決

    Java反轉(zhuǎn)字符串和相關(guān)字符編碼的問題解決

    反轉(zhuǎn)字符串一直被當(dāng)作是簡(jiǎn)單問題,大家的思想主要就是利用遍歷,首尾交換字符實(shí)現(xiàn)字符串的反轉(zhuǎn)。例如下面的代碼,就可以簡(jiǎn)單實(shí)現(xiàn)反轉(zhuǎn)。
    2013-05-05
  • 解決Mybatis?plus實(shí)體類屬性與表字段不一致的問題

    解決Mybatis?plus實(shí)體類屬性與表字段不一致的問題

    這篇文章主要介紹了Mybatis?plus實(shí)體類屬性與表字段不一致解決方法,文末給大家提到了Mybatis-plus中數(shù)據(jù)庫表名和表字段名的相關(guān)知識(shí),需要的朋友可以參考下
    2022-07-07
  • Java數(shù)字轉(zhuǎn)中文大寫工具類詳細(xì)代碼(拿去即用)

    Java數(shù)字轉(zhuǎn)中文大寫工具類詳細(xì)代碼(拿去即用)

    最近項(xiàng)目中用到金額轉(zhuǎn)大寫的地方,索性給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Java數(shù)字轉(zhuǎn)中文大寫工具類的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-05-05
  • java HashMap 的工作原理詳解

    java HashMap 的工作原理詳解

    本文主要介紹java HashMap 的資料,這里整理了相關(guān)資料,并詳細(xì)說明了HashMap的用法,有需要的小伙伴可以參考下
    2016-09-09
  • 淺談Java基于Consul創(chuàng)建分布式鎖

    淺談Java基于Consul創(chuàng)建分布式鎖

    這篇文章主要介紹了淺談基于Consul創(chuàng)建分布式鎖,Consul是HashiCorp公司推出的開源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置Consul是分布式的、高可用的、可橫向擴(kuò)展的,需要的朋友可以參考下
    2023-07-07
  • 使用IDEA對(duì)SpringBoot應(yīng)用進(jìn)行遠(yuǎn)程調(diào)試方式

    使用IDEA對(duì)SpringBoot應(yīng)用進(jìn)行遠(yuǎn)程調(diào)試方式

    文章介紹了如何在IDEA中對(duì)部署在服務(wù)器上的SpringBoot應(yīng)用進(jìn)行遠(yuǎn)程調(diào)試,通過配置遠(yuǎn)程調(diào)試端口和啟動(dòng)參數(shù),本地IDEA可以設(shè)置斷點(diǎn)并進(jìn)行調(diào)試
    2025-02-02
  • 關(guān)于java命令的本質(zhì)邏輯揭秘過程

    關(guān)于java命令的本質(zhì)邏輯揭秘過程

    Java是通過java虛擬機(jī)來裝載和執(zhí)行編譯文件(class文件)的,java虛擬機(jī)通過命令java  option 來啟動(dòng),這篇文章主要給大家介紹了關(guān)于java命令的本質(zhì)邏輯揭秘的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-05-05

最新評(píng)論

宁蒗| 井研县| 文登市| 宝坻区| 修武县| 三原县| 泰兴市| 河北区| 武义县| 富川| 闻喜县| 谷城县| 万荣县| 全州县| 汪清县| 鲜城| 翁牛特旗| 博兴县| 乳源| 阿荣旗| 上犹县| 泰州市| 巍山| 永州市| 从化市| 瑞安市| 太保市| 柯坪县| 商南县| 新兴县| 阿拉善右旗| 泰宁县| 阳原县| 独山县| 南安市| 香格里拉县| 嘉兴市| 连江县| 崇义县| 犍为县| 金秀|