溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JVM中怎么判斷類是否相同

發布時間:2021-07-23 16:43:41 來源:億速云 閱讀:288 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關JVM中怎么判斷類是否相同,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

JVM根據兩個方面判斷:一是類的全稱;另一個是類加載器。

根據上篇博客中的結果得出:類的全稱是相同的。那類加載器是否相同呢?即使類的全稱相同,而使用的加載器不同,那Class對象也是不同的。那我們繼續上篇博客中的例子,看看所使用的加載器的結果如何呢?其中使用getClassLoad()方法。

/**    * @author: 梁煥月     * 文件名:TestClass.java     * 時間:2012-2-6上午10:01:52      */  public class TestClass {       public  static void main(String[] args)   {   try {   //測試Class.forName()   Class testTypeForName=Class.forName("TestClassType");           System.out.println("testForName---"+testTypeForName);   //測試類加載器   System.out.println("forName形式的加載器--"+testTypeForName.getClassLoader());   //測試類名.class   Class testTypeClass=TestClassType.class;   System.out.println("testTypeClass---"+testTypeClass);   //測試類加載器   System.out.println(".class形式的加載器---"+testTypeClass.getClassLoader());   //測試Object.getClass()   TestClassType testGetClass= new TestClassType();   System.out.println("testGetClass---"+testGetClass.getClass());   //測試類加載器   System.out.println("getClass形式的加載器--"+testGetClass.getClass().getClassLoader());    } catch (ClassNotFoundException e) {   // TODO Auto-generated catch block   e.printStackTrace();   }       }   }    class TestClassType{   //構造函數   public TestClassType(){   System.out.println("----構造函數---");   }   //靜態的參數初始化   static{   System.out.println("---靜態的參數初始化---");   }   //非靜態的參數初始化   {   System.out.println("----非靜態的參數初始化---");   }           }

結果如下:

觀察結果發現:三種形式的加載器是相同的。

因此可以說明上篇博客中例子中的三個方式生成的Class對象只有一個.同樣也證明了上篇博客中Class對象生成的原理。JVM首先判斷內存中是否已經加載該類。判斷的依據就是此篇博客的介紹。

以上就是JVM中怎么判斷類是否相同,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jvm
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女