反射(2)
阿新 • • 發佈:2022-05-11
得到Class類的幾種方法
package com.reflection;/** * 測試Class類的建立方式有哪些 * @author 長空扯淡 */ public class Test02 { public static void main(String[] args) throws ClassNotFoundException { Person person = new Student(); System.out.println(person.name); //方式一:通過物件獲得 Class c1 = person.getClass(); System.out.println(c1.hashCode());//方式二:forName獲得 Class c2 = Class.forName("com.reflection.Student"); System.out.println(c2.hashCode()); //方式三:通過類名.class獲得 Class<Student> c3 = Student.class; System.out.println(c3.hashCode()); //方式四:基本內建型別的包裝類都有一個Type屬性 Class c4 = Integer.TYPE; System.out.println(c4);//獲得父類型別 Class c5 = c1.getSuperclass(); System.out.println(c5); } } class Person{ public String name; public Person(){} public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }class Student extends Person{ public Student(){ this.name = "學生"; } } class Teacher extends Person{ public Teacher(){ this.name = "老師"; } }
所有型別的Class物件
package com.reflection; import java.lang.annotation.ElementType; //所有型別的class public class Test03 { public static void main(String[] args) { Class c1 = Object.class; //類 Class c2 = Comparable.class; //介面 Class c3 = String[].class; //一維陣列 Class c4 = int[][].class; //二維陣列 Class c5 = Override.class; //註解 Class c6 = ElementType.class; //列舉 Class c7 = Integer.class; //基本資料型別 Class c8 = void.class; //void Class c9 = Class.class; //Class //只要元素型別與維度一樣,就是同一個Class int[] a = new int[10]; int [] b = new int[100]; System.out.println(a.getClass().hashCode()); System.out.println(b.getClass().hashCode()); } }