Java中class和Class的區(qū)別示例詳解
一.class與Class區(qū)別
class是Java中的關(guān)鍵字,如public class Xxx 或者 class Xxx ,在聲明Java類時使用。 而Class是一個類。 我們通常認為類是對象的抽象和集合,Class就相當于是對類的抽象和集合。 也可以認為對象是類的實例,類是Class的實例。
二.Class介紹
Class是一個類。如下圖,它在java.lang包中。
它的構(gòu)造函數(shù)是private屬性,所以我們不能直接new一個Class對象出來,如下圖注釋段所說: “私有構(gòu)造函數(shù)。只有Java虛擬機創(chuàng)建類對象。不使用此構(gòu)造函數(shù),并阻止生成默認構(gòu)造函數(shù)。”
三.如何得到Class對象
1.通過getClass()方法獲取到Class對象
getClass()方法是Object類的一部分,如下圖:
如果我們已經(jīng)創(chuàng)建了某個類型的對象,那么我們可以通過getClass()方法來獲取該類型的Class的對象:
package Task; import org.junit.Test; public class Try0 { @Test public void toTry() throws ClassNotFoundException { // //forName方法:參數(shù)為其類的路徑 // Class a = Class.forName("Task.Try1"); // System.out.println(a); //通過對象得到類 Try1 try1 = new Try1(); Class b = try1.getClass(); System.out.println(b); } } class Try1{ }
測試運行結(jié)果:
2.通過forName()方法獲取到Class對象
Class.forName方法是Class類的一個靜態(tài)方法,如下圖:
所以可以直接通過Class.forName("類的路徑")獲取Class對象:
package Task; import org.junit.Test; public class Try0 { @Test public void toTry() throws ClassNotFoundException { //forName方法:參數(shù)為其類的路徑 Class a = Class.forName("Task.Try1"); System.out.println(a); } } class Try1{ }
測試運行截圖:
3.類.class獲得Class對象(類字面常量)
package Task; import org.junit.Test; public class Try0 { @Test public void toTry() throws ClassNotFoundException { // //forName方法:參數(shù)為其類的路徑 // Class a = Class.forName("Task.Try1"); // System.out.println(a); // //通過對象得到類 // Try1 try1 = new Try1(); // Class b = try1.getClass(); // System.out.println(b); //類字面常量 Class c = Try1.class; System.out.println(c); } } class Try1{ }
測試運行結(jié)果:
四.Class常用方法
package Task; import org.junit.Test; public class Try0 { @Test public void toTry() throws ClassNotFoundException { // //forName方法:參數(shù)為其類的路徑 // Class a = Class.forName("Task.Try1"); // System.out.println(a); //通過對象得到類 Try1 try1 = new Try1(); Class b = try1.getClass(); System.out.println(b); // //類字面常量 // Class c = Try1.class; // System.out.println(c); //isInterface方法,判斷是否為接口 System.out.println(b.isInterface()); //isArray方法,判斷是否為數(shù)組 System.out.println(b.isArray()); //isPrimitive方法,判斷是否是基本類型,例如int是基本類型,Integer為包裝類 System.out.println(b.isPrimitive()); //isAnnotation方法,判斷是否為注解,注解如常見的重寫注解@Override,我們所用的單元測試@Test注解 System.out.println(b.isAnnotation()); //isInstance方法參數(shù)是一個對象,判斷該對象try1對應的類Try1是否是b的對象 System.out.println(b.isInstance(try1)); //getClassLoader方法,獲取類加載器 System.out.println(b.getClassLoader()); //getSuperclass方法,獲取父類信息 System.out.println(b.getSuperclass()); //getGenericSuperclass方法,也是獲取父類信息 System.out.println(b.getGenericSuperclass()); //getComponentType方法,如果b的類型是數(shù)組,則獲取數(shù)組里元素的類型 System.out.println(b.getComponentType()); //getDeclaredClasses方法,獲取b繼承于哪個類 System.out.println(b.getDeclaredClasses()); //幾個獲取name的方法: //getName方法 System.out.println(b.getName()); //getTypeName方法 System.out.println(b.getTypeName()); //getCanonicalName方法 System.out.println(b.getCanonicalName()); //getSimpleName方法 System.out.println(b.getSimpleName()); // 以下還有一些方法只列舉出來 // getTypeParameters方法,獲取泛型類中的泛型參數(shù)數(shù)組 // getClasses方法,獲取Class對象中public修飾的內(nèi)部類 // getDeclaredClasses方法,獲取Class對象中的內(nèi)部類,繼承成員不包含在內(nèi) // getConstructors方法,獲取public修飾的構(gòu)造函數(shù) // getConstructor方法,查找對應的構(gòu)造函數(shù) // getDeclaredConstructors方法,獲取Class對象中的構(gòu)造函數(shù) } } class Try1 { }
輸出截圖如下:
總結(jié)
到此這篇關(guān)于Java中class和Class區(qū)別的文章就介紹到這了,更多相關(guān)Java class和Class區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用 Shell 腳本查看多個服務器的端口是否打開的方法
這篇文章主要介紹了如何使用 Shell 腳本來查看多個服務器的端口是否打開的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06淺談Java8 的foreach跳出循環(huán)break/return
這篇文章主要介紹了Java8 的foreach跳出循環(huán)break/return,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07Spring IOC源碼剖析_如何整體認知Spring體系結(jié)構(gòu)
這篇文章主要介紹了Spring IOC源碼剖析_如何整體認知Spring體系結(jié)構(gòu)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09springmvc+mybatis 做分頁sql 語句實例代碼
本文通過一段實例代碼給大家介紹了springmvc+mybatis 做分頁sql 語句的方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-07-07基于創(chuàng)建Web項目運行時出錯的解決方法(必看篇)
下面小編就為大家?guī)硪黄趧?chuàng)建Web項目運行時出錯的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08