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

Java 反射之私有字段和方法詳細(xì)介紹

 更新時間:2012年11月26日 12:08:19   作者:  
本文將介紹Java 反射之私有字段和方法的應(yīng)用,需呀了解的朋友可以參考下
盡管我們通常認(rèn)為通過JAVA的反射機(jī)制來訪問其它類的私有字段和私有方法是可行的,其實并沒有那么困難。
注釋:只有在單獨(dú)的JAVA程序中運(yùn)行該代碼才有效,就像你做一些單元測試或者常規(guī)的程序。如果你嘗試在JAVA APPLET內(nèi)使用該方法,你需要稍稍修改SecurityManager。但是,因為你不是經(jīng)常需要與它打交道,這里也就不再贅述了。
這里是本次內(nèi)容的列表:
1.訪問私有字段。
2.訪問私有方法。
訪問私有字段:
為了訪問私有字段,你需要調(diào)用Class.getDeclaredField(String name)或者Class.getDeclaredFields()方法。方法Class.getField(String name)和Class.getFields()僅僅返回共有的字段,所以它們都無法起到作用。這里有一個例子,該例子中有一個包含私有字段的類,在該類下面有通過反射訪問私有字段的代碼。
復(fù)制代碼 代碼如下:

public class PrivateObject {
private String privateString = null; //聲明為私有字段
public PrivateObject(String privateString) {
this.privateString = privateString;
}
}

復(fù)制代碼 代碼如下:

PrivateObject privateObject = new PrivateObject("The Private Value");//實例化對象
Field privateStringField = PrivateObject.class.
getDeclaredField("privateString");
privateStringField.setAccessible(true);//允許訪問私有字段
String fieldValue = (String) privateStringField.get(privateObject);//獲得私有字段值
System.out.println("fieldValue = " + fieldValue);

這個代碼會打印出文本"fieldValue = The Private Value",而該值正好是對象PrivateObject的私有字段privateString的值。
注意到我們使用了方法PrivateObject.class.getDeclaredfield("privateString")。正是這個調(diào)用這個方法返回了私有字段。這個方法僅僅根據(jù)指定的類返回字段,不會返回父類申明的字段。
另外仔細(xì)觀察加粗的語句。通過調(diào)用 Field.setAccessible(true),你關(guān)掉了對于這個指定字段實例的訪問檢查,僅僅對反射有效?,F(xiàn)在你能訪問它了,不管它是私有的,保護(hù)的或是默認(rèn)的(default),即時調(diào)用者并不在該范圍中。你仍然不能通過常規(guī)方法訪問該字段,因為編譯器不允許。
訪問私有方法
為了訪問一個私有方法,你需要調(diào)用Class.getDeclaredMethod(String name,Class[] parameterTypes)或者Class.getDeclaredMethods()方法。方法Class.getMethod(String name,Class[] parameterTypes)和Class.getMethods()僅僅返回公有方法,所以它們不會起到作用。下面是一個簡單的例子,該例子中有一個擁有私有方法的類,類下面是通過反射機(jī)制訪問私有方法的代碼。
復(fù)制代碼 代碼如下:

public class PrivateObject {
private String privateString = null;
public PrivateObject(String privateString) {
this.privateString = privateString;
}
private String getPrivateString(){//私有方法
return this.privateString;
}
}

復(fù)制代碼 代碼如下:

PrivateObject privateObject = new PrivateObject("The Private Value");
Method privateStringMethod = PrivateObject.class.
getDeclaredMethod("getPrivateString", null);
privateStringMethod.setAccessible(true);
String returnValue = (String)
privateStringMethod.invoke(privateObject, null);
System.out.println("returnValue = " + returnValue);

這個代碼例子會打印出文本"returnValue = The private Value",該值正好是私有方法的返回值。

相關(guān)文章

  • Java獲取Jar、War包路徑并生成可編輯修改的本地配置文件

    Java獲取Jar、War包路徑并生成可編輯修改的本地配置文件

    這篇文章主要給大家介紹了關(guān)于Java如何獲取Jar、War包路徑并生成可編輯修改的本地配置文件,文中通過代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • windows下java -jar 后臺運(yùn)行以及殺死后臺進(jìn)程的操作

    windows下java -jar 后臺運(yùn)行以及殺死后臺進(jìn)程的操作

    這篇文章主要介紹了windows下java -jar 后臺運(yùn)行以及殺死后臺進(jìn)程的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 如何在Spring Boot中建立連接及測試

    如何在Spring Boot中建立連接及測試

    對于剛接觸MQTT的開發(fā)者來說,了解如何在Spring Boot項目中集成MQTT客戶端并建立連接是邁向?qū)嶋H應(yīng)用的重要一步,今天,我將分享一個詳細(xì)的入門指南,帶你一步步在Spring Boot中建立MQTT連接,并通過JUnit進(jìn)行簡單的單元測試,感興趣的朋友一起看看吧
    2024-12-12
  • java讀取配置文件(properties)的時候,unicode碼轉(zhuǎn)utf-8方式

    java讀取配置文件(properties)的時候,unicode碼轉(zhuǎn)utf-8方式

    這篇文章主要介紹了java讀取配置文件(properties)的時候,unicode碼轉(zhuǎn)utf-8方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringCloud OpenFeign概述與使用

    SpringCloud OpenFeign概述與使用

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡(luò)通信的細(xì)節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡(luò)通信細(xì)節(jié)。所有遠(yuǎn)程調(diào)用,都像調(diào)用本地方法一樣完成
    2023-01-01
  • java實現(xiàn)在復(fù)制文件時使用進(jìn)度條(java實現(xiàn)進(jìn)度條)

    java實現(xiàn)在復(fù)制文件時使用進(jìn)度條(java實現(xiàn)進(jìn)度條)

    在對大文件操作時,可能會需要些時間,此時為用戶提供進(jìn)度條提示是非常常見的一項功能,這樣用戶就可以了解操作文件需要的時間信息。本實例為大家介紹了在復(fù)制大的文件時使用的進(jìn)度條提示,需要注意的是,只有在讀取文件超過2秒時,才會顯示進(jìn)度條
    2014-03-03
  • java-collection中的null,isEmpty用法

    java-collection中的null,isEmpty用法

    這篇文章主要介紹了java-collection中的null,isEmpty用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring-Boot 訪問外部接口的方案總結(jié)

    Spring-Boot 訪問外部接口的方案總結(jié)

    在Spring-Boot項目開發(fā)中,存在著本模塊的代碼需要訪問外面模塊接口,或外部url鏈接的需求,針對這一需求目前存在著三種解決方案,下面將對這三種方案進(jìn)行整理和說明,對Spring-Boot 訪問外部接口方案感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Spring框架學(xué)習(xí)筆記之方法注解@Bean的使用

    Spring框架學(xué)習(xí)筆記之方法注解@Bean的使用

    這篇文章主要給大家介紹了關(guān)于Spring框架學(xué)習(xí)筆記之方法注解@Bean使用的相關(guān)資料,這是一個我們很常用的注解,作用是指示一個方法生成一個由Spring管理的Bean,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • idea的使用之關(guān)于tomcat熱部署的教程

    idea的使用之關(guān)于tomcat熱部署的教程

    這篇文章主要介紹了idea的使用之關(guān)于tomcat熱部署的教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論

门头沟区| 洛宁县| 含山县| 雷山县| 邻水| 榆林市| 都匀市| 玉田县| 广东省| 开封县| 南投市| 栾川县| 安岳县| 化隆| 太康县| 福泉市| 永登县| 洛阳市| 陆川县| 瑞丽市| 迁安市| 忻州市| 武平县| 龙川县| 泾川县| 万宁市| 连州市| 绍兴市| 禄劝| 夏津县| 托克托县| 铜陵市| 锡林浩特市| 奉新县| 清远市| 洮南市| 乌什县| 德格县| 龙江县| 定边县| 孟津县|