1. 程式人生 > >獲取Class物件的三種獲取方式:

獲取Class物件的三種獲取方式:

方法一:通過object類中的getClass方法
//雖然通用,但是前提是必須有指定類,並對該類進行物件的建立,才可以呼叫getclass方法。

方法二:使用任意資料型別的一個靜態成員:class,所有的資料型別,都具備的一個屬性,,
//不需要new物件,但還是要使用具體的類:

方法三:使用Class類中的Forname方法,通過給定的類名來獲取對應的位元組碼檔案物件。
//必須知道類的名字,獲取位元組碼檔案,則需有forname自動完成,這就是反射技術。

package reflect;

public class ReflectGetClassDemo {
//要想獲取位元組碼檔案中的成員,必須要先獲取位元組碼檔案物件
	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
//		方法一:通過object類中的getClass方法
//		雖然通用,但是前提是必須有指定類,並對該類進行物件的建立,才可以呼叫getclass方法。
//		getClass_way1();
		
//		方法二:使用任意資料型別的一個靜態成員:class,所有的資料型別,都具備的一個屬性,,
		//不需要new物件,但還是要使用具體的類:
//		getClass_way2();
		
//		方法三:使用Class類中的Forname方法,通過給定的類名來獲取對應的位元組碼檔案物件。
//		必須知道類的名字,獲取位元組碼檔案,則需有forname自動完成,這就是反射技術。
		getClass_way3();
	}

	private static void getClass_way3() throws 
				ClassNotFoundException, InstantiationException, IllegalAccessException {
		
		String className = "reflect.Person";//必須是全名稱:
		//1,通過給定的類名稱載入對應的位元組碼檔案,並封裝成位元組碼檔案物件Class
		Class clazz = Class.forName(className);
//		System.out.println(clazz);
		
		//通過newInstance(),就可以建立位元組碼物件所表示的類的例項。 
			//通過new建立給定類的例項
			//呼叫該類的建構函式,會呼叫該例項的建構函式
			//通常被髮射的類都會有建構函式。。
			//沒有對應的建構函式會報InstantiationException異常。
			//如果有提供但許可權不夠,會報無效訪問異常。
		Object obj = clazz.newInstance();
		//Person p = new Person();
//		1,載入Person類,並將Person類封裝成位元組碼檔案物件。
//		2,通過new建立Person物件。
//		3,呼叫建構函式對物件初始化。
		System.out.println(obj);//結果:類名@雜湊值:
[email protected]
} private static void getClass_way2() { //不需要new物件,但還是要使用具體的類: Class clazz = Person.class;//所有資料型別都通用的方法,獲取位元組碼物件 System.out.println(clazz); } private static void getClass_way1() { // 通過object類中的getClass方法 // 雖然通用,但是前提是必須有指定類,並對該類進行物件的建立,才可以呼叫getclass方法。 Person p = new Person(); Class clazz = p.getClass(); System.out.println(clazz.getName()); Person p2 = new Person(); Class clazz2 = p.getClass(); System.out.println(clazz2.getName()); } }


相關推薦

java筆記-反射機制-獲取class型別方式

反射(reflect)機制:    主要指程式可以訪問、檢測和修改它本身狀態或行為的一種能力,並能根據自身行為的狀態和結果,調整或修改應用所描述行為的狀態和相關的語義。 反射機制作用作用:    1.反編譯。.class-->.java  檢視class檔案中含有

命名空間的引用方式非限定名稱、限定名稱、完全限定名稱

inf .cn const bsp domain spa 命名空間 turn 使用 1 //命名空間的三種引用方式:非限定名稱、限定名稱、完全限定名稱 2 3 namespace app\home; 4 const SET_NAME = ‘百度‘;

Java程式碼複用的常用方式繼承、組合和代理

複用程式碼是Java眾多引人注目的功能之一。這句話很通順,沒什麼問題,但問題在於很多人並不清楚“複用”是什麼。就好像我說“沉默王二是一個不止會寫程式碼的程式設計師”,唉,沉默王二是誰? 如果想學習Java工程化、高效能及分散式、深入淺出。微服務、Spring,MyBatis,Netty原始碼分析的朋友可以加

java swing 常用的佈局方式邊界佈局、流佈局、網格佈局管理器

作者:firstmiki 來源:firstmiki的部落格 著作權歸作者所有,轉載請聯絡作者獲得授權。 這篇博文僅僅簡單介紹了三種常見的佈局管理器,都是一些簡單應用; 一、 邊界佈局管理器(FlowLayout) /* * 功能:演示邊界佈局管理器:元件的位

Java代碼復用的常用方式繼承、組合和代理

是個 繼續 不想 完成 extend 工作 代碼復用 輕松 例如 復用代碼是Java眾多引人註目的功能之一。這句話很通順,沒什麽問題,但問題在於很多人並不清楚“復用”是什麽。就好像我說“沈默王二是一個不止會寫代碼的程序員”,唉,沈默王二是誰? 我們需要來給“復用”下一個定義

Java web的打包方式jar、war、ear

  以最終客戶的角度來看,JAR檔案就是一種封裝,他們不需要知道jar檔案中有多少個.class檔案,每個檔案中的功能與作用,同樣可以得到他們希望的結果。除jar以外對於J2EE來說還有war和ear。區別見下表: JAR WAR EAR 英文 Java Ar

獲取Class物件獲取方式

方法一:通過object類中的getClass方法 //雖然通用,但是前提是必須有指定類,並對該類進行物件的建立,才可以呼叫getclass方法。 方法二:使用任意資料型別的一個靜態成員:clas

3、獲取Class物件方式

3、獲取Class物件的三種方式 要想對位元組碼檔案進行解刨,必須要有位元組碼檔案物件 Object類中的getClass方法 通過物件靜態屬性 .class來獲取對應的Class物件 只要通過給定類的字串名稱就可以獲取該類,更為拓展 3.1 方式一:Object類中的getClass

java 反射(一) 獲取Class物件方式

package com.reflect; /** * 三種獲得Class物件的方式 * @author lr * */ public class Demo1 { public static void main(String[] args) throws ClassNotFound

Java反射的定義以及獲取class物件方式

1、什麼是反射技術? java反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意一個方法和屬性。 應用程式已經執行,無法在其中進行new物件的建立,就無法使用物件。這時可以根據配置檔案的類全名去找對應的位元組碼檔案(class檔案)

Java反射之獲取Class物件方式

package cn.itcast.reflect.demo; import cn.itcast.bean.Person; /* * JAVA反射機制是在執行狀態中,對於任意一個類 (class檔案),都能夠知道這個類的所有屬性和方法; * 對於任意一個物件,都能夠呼叫它的任意一個方法

java 反射之獲取class物件方式

獲取Class檔案物件有3種方法:    1.Object類的getClass()方法     2.資料型別中的靜態變數 類名.Class     3.Class類中的靜態方法         pub

JAVA反射(一)獲取Class物件方式及其區別

JAVA有三種方式可以獲得Class物件 1、通過類名.class方式獲得,Class<?>  cType = ClassName.class; public class Client {public static void main(String[] args

Java中的Class類以及獲取Class物件方式

java.lang.Class 之前Hadoop裡面job.setMapperClass(Map.class)之類的方法用到了 xxx.class的寫法,當時也沒有深究。這兩天又遇到了xxx.getClass()的寫法,稍微看了一下。 java API裡這樣寫道: Class 類的例項表示正在執行的

獲取Class物件方式

//綜合最好的方法是第三種方法/**法一:是通過類物件來獲取class的*法二:通過類直接調class*法三:通過Class.forName();*/package hncu.reflect.getClass;import java.lang.reflect.Method;i

java反射機制——獲取class物件的方法

package cn.itcast.reflect.demo; import cn.itcast.bean.demo.Person; /** * * 獲取Class物件的3中方法: * * * */ public class ReflectDemo1 { public st

簡單談談我對Java 中 Class.forName()、Class.class、例項物件.getClass() 獲取位元組碼物件的理解?(內含程式碼分析和總結)

首先得明白的知識點: 1靜態屬性初始化載入類的時候初始化( 只會初始化一次),而非靜態屬性的初始化就是new類例項物件的時候初始化的 2三種獲取位元組碼物件的共同點就是都會預先的判斷記憶體是否已經載入此類,弱沒有載入,則會把.class檔案裝入到記憶體,若是載入了,則會根據class檔案生成例

Java 反射獲取Class物件的幾方式

Java 程式中獲得 Class 物件通常有如下三種方式: •使用 Class 的 forName() •呼叫某個類的 class 屬性 •呼叫某個物件的 getClass() 程式碼舉例: 內容解析: Class本身也是一個類,當JVM將使用者自定義的類載入進來之後

document物件+獲取節點方法演示

document物件的演示。該物件將標記型文件進行封裝。該物件的作用,是可以對標記型文件進行操作。最常見的操作就是,想要實現動態效果,需要對節點操作,那麼要先獲取到這個節點。要想獲取節點,必須要先獲取到節點所屬的文件物件document。所以document物件最常見的操

Java 獲取Class物件方法

Java中的java.lang.Class,簡單理解就是為每個java物件的型別標識的類,虛擬機器使用執行時型別資訊選擇正確的執行方法,用來儲存這些執行時型別資訊的就是Class類。虛擬機器為每種型別管理一個獨一無二的物件,即Class物件,當類被載入時,對應的Class型