天天看點

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

文章目錄

  • 一、什麼是java反射機制?
  • 二、Class類有什麼特點?
  • 三、擷取Class類的執行個體化對象
    • 1.forName方法
    • 2.類名.class
    • 3.包裝類.TYPE
    • 4.getClass方法
    • 5.元素類型[].class
    • 6.調用某個類的Class類執行個體化對象的getSuperClass方法

一、什麼是java反射機制?

Java反射機制是在運作狀态中,對于任何一個類我們都可以調用其中的屬性和方法,對于任意一個對象我們都可以調用它的屬性和方法,這種動态操作類和對象的屬性和方法的機制叫Java反射機制。

Java反射機制為了實作對成員變量,普通方法,構造方法的操作,需要借助Java自身提供的java.lang包下的Class類和java.lang.reflect包下反射API

二、Class類有什麼特點?

Class類是Java反射機制的入口

如果封裝了一個類或接口的運作時資訊,可以通過調用Class類來擷取這些資訊

按住Ctrl鍵再将滑鼠浮到Class上可以檢視Class類的資訊

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

①該類在java.lang包中

可以通過檢視Class類的資訊(26行)看到下圖

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

也可以通過下列代碼查出

public class Test {

	public static void main(String[] args) {
		System.out.println(Class.class);//擷取Class類的執行個體
	}
}
           

執行結果證明Class類在java.lang包下

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

②該類被final修飾,該類不可以被子類繼承(在Class類的119行可以看到下圖)

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

該類不可以被子類繼承

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

③該類實作了Serializable接口(119行)

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

④該類的構造方法用private修飾,不能通過new關鍵字建立該類的對象(137行)

java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

三、擷取Class類的執行個體化對象

Class類不能通過new關鍵詞建立對象

1.forName方法

通過Class類靜态forName(“類包名.類名”)擷取Class執行個體

public class Test{

	public static void main(String[] args) {
		try {
			Class<?> class1 = Class.forName("java.lang.Class");//如果泛型不确定?确定
			System.out.println(class1);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}
           

2.類名.class

public class Test{

	public static void main(String[] args) {
		Class<Student> student = Student.class;
		System.out.println(student);
	}
}
class Student{
	
}
           
java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

3.包裝類.TYPE

如果是基本資料類型,可以通過包裝類.TYPE擷取Class類的執行個體化對象,也可以通過基本資料類型.class擷取

public class Test{

	public static void main(String[] args) {
		Class<Boolean> class1 = Boolean.TYPE;
		System.out.println(class1);
	}
}
           
java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

public class Test{

	public static void main(String[] args) {
		Class<Boolean> cl = Boolean.class;
		System.out.println(cl);
	}
}
           
java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

4.getClass方法

public class Test{

	public static void main(String[] args) {
		Class<?> student = new Student().getClass();
		System.out.println(student);
	}
}
class Studnet{
	
}
           
java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

5.元素類型[].class

public class Test{

	public static void main(String[] args) {
		Class<String[]> clazz = String[].class;
		System.out.println(clazz);
	}
}
           
java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象

6.調用某個類的Class類執行個體化對象的getSuperClass方法

public class Test{

	public static void main(String[] args) {
		Class<?> clazz = Student.class.getSuperclass();
		System.out.println(clazz);
	}
}
class Studnet{
	
}
           
java反射機制是什麼?Class有什麼特點?怎麼擷取Class類執行個體?一、什麼是java反射機制?二、Class類有什麼特點?三、擷取Class類的執行個體化對象