獲取class對象的六種方法
了解:class類——是Java反射機制的入口,封裝了一個類或接口的運行信息,通過調用Class類的方法可以獲取這些信息,其特點如下:
1、該類在java.lang包中;
2、該類被final所修飾,即該類不可以被子類繼承
3、該類實現了Serializable接口
4、該類的構造方法被private所修飾,所以不能通過new關鍵字創建該類的對象
①先創建一個類
//創建一個Student類 package com.zzj.vo; public class Student { public String name; public Student(){ } public Student(String name){ this.name = name; } public void doHomework(){ System.out.println(name+"正在寫作業..."); } }
②測試獲取對象
第一種:Class.forName方法獲取
Class clazz = null; try { clazz = Class.forName("com.zzj.vo.Student"); System.out.println(clazz.getName()); } catch (ClassNotFoundException e) { e.printStackTrace(); }
//輸出結果為com.zzj.vo.Student
第二種:類名.class方法獲取
clazz = Student.class; System.out.println(clazz.getName()); //輸出結果為com.zzj.vo.Student
第三種:對象.getClass()
clazz = new Student().getClass(); System.out.println(clazz.getName()); //輸出結果為com.zzj.vo.Student
第四種:基本數據類型對應的class對象:包裝類、TYPE
clazz = Integer.TYPE; System.out.println(clazz.getName());//輸出int clazz = Integer.class; System.out.println(clazz.getName());//輸出java.lang.Integer
第五種:數組類型對應的class:元素類型[].class
clazz = String[].class; System.out.println(clazz.getName()); //輸出結果為[Ljava.lang.String;
第六種:某個類父類所對應的的class對象
clazz = Student.class.getSuperclass(); System.out.println(clazz.getName()); //輸出結果為java.lang.Object