亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

ChanceWong / 758人閱讀

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

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

繼續(xù)講述Java反射之三:方法、數(shù)組、類加載器

一、方法

獲取所有方法(包括父類或接口),使用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、權(quán)限 
            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、參數(shù)
            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
二、 數(shù)組

操作數(shù)組需要借助Array類。

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

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

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

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

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

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

四、類的生命周期

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

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

鏈接就是把二進制數(shù)據(jù)組裝為可以運行的狀態(tài)。鏈接分為校驗,準(zhǔn)備,解析這3個階段

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

2、準(zhǔn)備就是為靜態(tài)成員分配內(nèi)存空間。并設(shè)置默認(rèn)值

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

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

樂字節(jié)原創(chuàng),歡迎繼續(xù)關(guān)注 樂字節(jié)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/75245.html

相關(guān)文章

  • 字節(jié)Java反射之四:反射相關(guān)操作

    摘要:大家好,樂字節(jié)小樂繼續(xù)為初學(xué)者講述基礎(chǔ)知識。上次說到樂字節(jié)反射之三方法數(shù)組類加載器,這次是反射之四反射相關(guān)操作操作屬性獲取對象獲取對象設(shè)置屬性打開權(quán)限獲取此屬性調(diào)用方法調(diào)用方法,都是直接對象方法實參反射之后,動態(tài)調(diào)用方法需要使用即可。 大家好,樂字節(jié)小樂繼續(xù)為Java初學(xué)者講述Java基礎(chǔ)知識。上次說到樂字節(jié)Java反射之三:方法、數(shù)組、類加載器,這次是Java反射之四:反射相關(guān)操作 ...

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

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

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

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

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

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

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

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

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

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