• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 知識大全 > 知識百科 > 百科知識 > 什么是反射機制反射機制的安全性

    什么是反射機制反射機制的安全性

    時間: 謝君787 分享

    什么是反射機制反射機制的安全性

      反射機制主要是指程序可以訪問、檢測和修改它本身狀態或行為的一種能力。那么你對反射機制了解多少呢?以下是由學習啦小編整理關于什么是反射機制的內容,希望大家喜歡!

      反射機制的概念

      在計算機科學領域,反射是指一類應用,它們能夠自描述和自控制。也就是說,這類應用通過采用某種機制來實現對自己行為的描述(self-representation)和監測(examination),并能根據自身行為的狀態和結果,調整或修改應用所描述行為的狀態和相關的語義。

      反射機制也被應用到了視窗系統、操作系統和文件系統中。 反射本身并不是一個新概念,它可能會使我們聯想到光學中的反射概念,盡管計算機科學賦予了反射概念新的含義,但是,從現象上來說,它們確實有某些相通之處,這些有助于我們的理解。同一般的反射概念相比,計算機科學領域的反射不單單指反射本身,還包括對反射結果所采取的措施。所有采用反射機制的系統(即反射系統)都希望使系統的實現更開放。可以說,實現了反射機制的系統都具有開放性,但具有開放性的系統并不一定采用了反射機制,開放性是反射系統的必要條件。一般來說,反射系統除了滿足開放性條件外還必須滿足原因連接(Causally-connected)。所謂原因連接是指對反射系統自描述的改變能夠立即反映到系統底層的實際狀態和行為上的情況,反之亦然。開放性和原因連接是反射系統的兩大基本要素。

      Java中,反射是一種強大的工具。它使您能夠創建靈活的代碼,這些代碼可以在運行時裝配,無需在組件之間進行源代表鏈接。反射允許我們在編寫與執行時,使我們的程序代碼能夠接入裝載到JVM中的類的內部信息,而不是源代碼中選定的類協作的代碼。這使反射成為構建靈活的應用的主要工具。但需注意的是:如果使用不當,反射的成本很高。

      反射機制的安全性

      在處理反射時安全性是一個較復雜的問題。反射經常由框架型代碼使用,由于這一點,我們可能希望框架能夠全面接入代碼,無需考慮常規的接入限制。但是,在其它情況下,不受控制的接入會帶來嚴重的安全性風險,例如當代碼在不值得信任的代碼共享的環境中運行時。

      由于這些互相矛盾的需求,Java編程語言定義一種多級別方法來處理反射的安全性。基本模式是對反射實施與應用于源代碼接入相同的限制:

      n 從任意位置到類公共組件的接入

      n 類自身外部無任何到私有組件的接入

      n 受保護和打包(缺省接入)組件的有限接入

      不過至少有些時候,圍繞這些限制還有一種簡單的方法。我們可以在我們所寫的類中,擴展一個普通的基本類java.lang.reflect.AccessibleObject 類。這個類定義了一種setAccessible方法,使我們能夠啟動或關閉對這些類中其中一個類的實例的接入檢測。唯一的問題在于如果使用了安全性管理器,它將檢測正在關閉接入檢測的代碼是否許可了這樣做。如果未許可,安全性管理器拋出一個例外。

      下面是一段程序,在TwoString 類的一個實例上使用反射來顯示安全性正在運行:

      public class ReflectSecurity {

      public static void main(String[] args) {

      try {

      TwoString ts = new TwoString("a", "b");

      Field field = clas.getDeclaredField("m_s1");

      //field.setAccessible(true);

      System.out.println("Retrieved value is " +field.get(inst));

      } catch (Exception ex) {

      ex.printStackTrace(System.out);

      } } }

      如果我們編譯這一程序時,不使用任何特定參數直接從命令行運行,它將在field .get(inst)調用中拋出一個IllegalAccessException異常。如果我們不注釋field.setAccessible(true)代碼行,那么重新編譯并重新運行該代碼,它將編譯成功。最后,如果我們在命令行添加了JVM參數-Djava.security.manager以實現安全性管理器,它仍然將不能通過編譯,除非我們定義了ReflectSecurity類的許可權限。
    看過“反射機制的安全性”的人還看了:

    1.java 反射調用set方法

    2.社會拒絕的生理反應及理論解釋探討論文

    3.早泄病的原因

    4.高中生物基礎知識手冊

    5.29歲右耳耳鳴怎么回事

    6.淺議激光的生物學效應及生物物理機理探討

    1595936 主站蜘蛛池模板: 中文字幕日本最新乱码视频| 欧美日韩亚洲国产千人斩| 精品毛片免费看| 老师的兔子好多软水在线看| 成人草莓视频在线观看| 91欧美精品综合在线观看| 99久久国产综合精品1尤物| j8又粗又长又硬又爽免费视频| 中文字幕动漫精品专区| 中文字幕久精品免费视频| 中文无码av一区二区三区| 中文字幕一区视频| 一本色道久久88—综合亚洲精品 | 91网站在线看| 18禁美女黄网站色大片免费观看 | www.午夜精品| 91av手机在线观看| 麻豆产精国品一二三产区区| 邻居少妇张开腿让我爽了在线观看| 黑人系列合集h| 成人羞羞视频网站| 诗涵留学荷兰被黑人摘小说| 色噜噜久久综合伊人一本| 精品一区二区久久久久久久网站| 福利所第一导航| 国产va在线播放| 国产交换丝雨巅峰| 国产福利精品一区二区| 91制片厂制作传媒免费版樱花| 奇米777在线视频| 三级毛片在线看| 扒下老师的黑色丝袜桶她| 久久久久黑人强伦姧人妻| 日韩黄色片网站| 亚洲丝袜第一页| 欧美国产日韩在线| 亚洲国产视频一区| 欧美日韩国产在线人成| 亚洲熟妇少妇任你躁在线观看 | 亚洲另类图片另类电影| 久久人妻少妇嫩草AV蜜桃|