国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

樂字節Java反射之三:方法、數組、類加載器和類的生命周期

ChanceWong / 688人閱讀

摘要:本文承接上一篇樂字節發射之二實例化對象接口與父類修飾符和屬性繼續講述反射之三方法數組類加載器一方法獲取所有方法包括父類或接口,使用即可。當沒有任何引用指向對象時就會被卸載,結束類的生命周期。

本文承接上一篇:樂字節Java發射之二:實例化對象、接口與父類、修飾符和屬性

繼續講述Java反射之三:方法、數組、類加載器

一、方法

獲取所有方法(包括父類或接口),使用Method即可。

 public static void test() throws Exception {
        Class clz = Class.forName("com.shsxt.ref.simple.User ");
        //獲取屬性
System.out.println("===============本類方法===============");
        // 取得全部公共方法
        Method[] methods =clz.getMethods();
        for(Method m:methods){
            //1、權限 
            int mod=m.getModifiers();
            System.out.print(Modifier.toString(mod)+" ");
            //2、返回類型
            Class returnType=m.getReturnType();
            System.out.print(returnType.getName()+" ");
            //3、名字
            String name =m.getName();
            System.out.print(name +"(");
            //4、參數
            Class[] para=m.getParameterTypes();
            for(int i=0;i p =para[i];
                System.out.print(p.getName() +" arg"+i);
                if(i!=para.length-1){
                    System.out.print(",");
                }
            }
            //異常
            Class[] exce=m.getExceptionTypes();
            if(exce.length>0){
                System.out.print(") throws ");
                for(int k=0;k
二、 數組

操作數組需要借助Array類。

//1、創建數組
        Object obj =Array.newInstance(int.class, 5);
        //2、獲取大小
        if(obj.getClass().isArray()){  //3、判斷是否為數組
            System.out.println(Array.getLength(obj));
            //4、設置值
            Array.set(obj,0, 100);
            //5、獲取值
            System.out.println(Array.get(obj,0));
        }
三、 類加載器

在java中有三種類類加載器:

⑴Bootstrap ClassLoader 此加載器采用c++編寫,一般開發中很少見。

⑵Extension ClassLoader 用來進行擴展類的加載,一般對應的是jrelibext目錄中的類

⑶AppClassLoader 加載classpath指定的類,是最常用的加載器。同時也是java中默認的加載器。 了解即可。

public static void main(String[] args) throws Exception {
         System.out.println("類加載器  "+ClassLoader.class.getClassLoader().getClass().getName());
    }

四、類的生命周期

在一個類編譯完成之后,下一步就需要開始使用類,如果要使用一個類,肯定離不開JVM。在程序執行中JVM通過裝載,鏈接,初始化這3個步驟完成。

類的裝載是通過類加載器完成的,加載器將.class文件的二進制文件裝入JVM的方法區,并且在堆區創建描述這個類的java.lang.Class對象。用來封裝數據。 但是同一個類只會被類裝載器裝載一次。

鏈接就是把二進制數據組裝為可以運行的狀態。鏈接分為校驗,準備,解析這3個階段

1、校驗一般用來確認此二進制文件是否適合當前的JVM(版本),

2、準備就是為靜態成員分配內存空間。并設置默認值

3、解析指的是轉換常量池中的代碼作為直接引用的過程,直到所有的符號引用都可以被運行程序使用(建立完整的對應關系)

完成之后,類型也就完成了初始化,初始化之后類的對象就可以正常使用了,直到一個對象不再使用之后,將被垃圾回收。釋放空間。當沒有任何引用指向Class對象時就會被卸載,結束類的生命周期。

樂字節原創,歡迎繼續關注 樂字節

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75245.html

相關文章

  • 字節Java反射之四:反射相關操作

    摘要:大家好,樂字節小樂繼續為初學者講述基礎知識。上次說到樂字節反射之三方法數組類加載器,這次是反射之四反射相關操作操作屬性獲取對象獲取對象設置屬性打開權限獲取此屬性調用方法調用方法,都是直接對象方法實參反射之后,動態調用方法需要使用即可。 大家好,樂字節小樂繼續為Java初學者講述Java基礎知識。上次說到樂字節Java反射之三:方法、數組、類加載器,這次是Java反射之四:反射相關操作 ...

    DevYK 評論0 收藏0
  • Java生命周期簡述

    摘要:一多個類的初始化在進入正文前首先根據上面的例子試圖猜測為了類中的函數能夠運行需要做哪些前置工作呢這些工作是以什么順序展開的呢為了更好的描述多個類的情形可以先試圖描述一個更簡單的例子把行和行和行注釋掉二類從到一句話把類從介質中復制到方法區通過 一)Example: 多個類的初始化 package me; class A { static int a = 1; static...

    qpwoeiru96 評論0 收藏0
  • java加載機制

    摘要:在加載階段,虛擬機要完成件事情通過一個類的全限定名來獲取定義此類的二進制字節流。前面的階段中,除了加載的時候,可以由用戶指定自定義類加載器之外,別的都是由虛擬機主導控制。 java類加載機制 代碼編譯的結果從本地機器碼轉變為字節碼,是存儲格式發展的一小步,確實編程語言發展的一大步 虛擬機把描述類的數據從class文件加載到內存,并對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直...

    garfileo 評論0 收藏0
  • 虛擬機加載機制

    摘要:加載階段在類的加載階段,虛擬機需要完成以下件事情通過一個類的全限定名來獲取定義此類的二進制字節流。驗證階段驗證是連接階段的第一步,這一階段的目的是為了確保文件的字節流中包含的信息符合當前虛擬機的要求,并且不會危害虛擬機自身的安全。 注:本篇文章中的內容是根據《深入理解Java虛擬機--JVM高級特性與最佳實踐》而總結的,如有理解錯誤,歡迎大家指正! 虛擬機把描述類的數據從Class文件...

    k00baa 評論0 收藏0
  • JVM 知識點 01

    摘要:新生代又被劃分為三個區域和兩個幸存區。這樣劃分的目的是為了使能夠更好地管理堆內存中的對象,包括內存的分配及回收。新生代主要存儲新創建的對象和尚未進入老年代的對象。 在Java中主要有以下三種類加載器: 引導類加載器(bootstrap class loader) --用來加載java的核心庫(Strin...

    不知名網友 評論0 收藏0

發表評論

0條評論

ChanceWong

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<