日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反射的基石——Class类

發布時間:2024/4/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射的基石——Class类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

一、概述

? ? 1、Java程序中的各個Java類屬于同一類事物,描述這類事物的Java類名就是Class。

? ? 2、對比提問:眾多的人用一個什么類表示?眾多的Java類用一個什么類表示?

????? ? 人 ——> Person

????? ? Java類 ——> Class

? ? 3、對比提問: Person類代表人,它的實例對象就是張三,李四這樣一個個具體的人,Class類代表Java類,它的各個實例對象又分別對應什么呢?

????? ? ①?對應各個類在內存中的字節碼,例如,Person類的字節碼,ArrayList類的字節碼,等等。

????? ? ②?一個類被類加載器加載到內存中,占用一片存儲空間,這個空間里面的內容就是類的字節碼,不同的類的字節碼是不同的,所以它們在內存中的內容是不同的,這一個個的空間可分別用一個個的對象來表示,這些對象顯然具有相同的類型,這個類型是什么呢?

? ? 4、如何得到各個字節碼對應的實例對象( Class類型)

????? ? ① 類名.class,例如,System.class

? ? ????② 對象.getClass(),例如,new Date().getClass()

? ? ????③ Class.forName("類名"),例如,Class.forName("java.util.Date");

????????? ? 注:此方式的兩種含義——

????????????? ? > 如果該類已經被類加載器加載至jvm虛擬機中,那么直接返回該字節碼實例對象

????????????? ? > 否則類加載器先將該類加載至jvm虛擬機并緩存,然后返回該字節碼實例對象

? ? 5、九個預定義Class實例對象

boolean byte char short int long float double void Boolean.TYPE, Character.TYPE, Byte.TYPE, Short.TYPE, Integer.TYPE, Long.TYPE, Float.TYPE, Double.TYPE, Void.TYPE

?? ?????①?參看Class.isPrimitive方法的幫助

????? ? ②?Int.class == Integer.TYPE

package staticimport;public class ReflectTest {public static void main(String[] args) throws Exception {String str = "abc";Class clazz = str.getClass();Class clazz2 = String.class;Class clazz3 = Class.forName("java.lang.String");//三種方式獲取String類的Class的實例對象均是同一個!System.out.println(clazz == clazz2);System.out.println(clazz == clazz3);//String是否是原始類型(false)System.out.println(String.class.isPrimitive());//int是否是原始類型(true)System.out.println(int.class.isPrimitive());//int與Integer的Class類型是否一樣(false)System.out.println(int.class == Integer.class);//Integer.TYPE其實就是int.class(true)System.out.println(int.class == Integer.TYPE);//int[]的Class類型是否是原始類型(false)System.out.println(int[].class.isPrimitive());//int[]的Class類型是否是數組類型(true)System.out.println(int[].class.isArray());}}

? ? 6、數組類型的Class實例對象

????????Class.isArray()

? ? 7、總之,只要是在源程序中出現的類型,都有各自的Class實例對象,例如,int[],void…

轉載于:https://my.oschina.net/Howard2016/blog/1613738

總結

以上是生活随笔為你收集整理的反射的基石——Class类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。