關於forName()、newInstance()、getMethod()、getClass()等區別的簡略說明
因為最近頻繁用到,只能是自己查查,總結一下,方便以後利用。
1、lass.forName( )靜態方法的目的是為了動態載入類。在載入完成後,一般還要呼叫Class下的newInstance( )靜態方法來例項化物件以便操作。因此,Class.forName( )是動態載入類是沒有用的,其最終目的是為了例項化物件。
一般的實現方式:
String carClassName = "com.etc.test5.Car";
//建立物件
Car car = (Car) Class.forName(carClassName).newInstance();
2、.getClass(); //得到該物件的class,後期可能會用到getField()得到該類宣告的屬性,getMethod()獲取方法物件。
常見用法:
Method method = car.getClass().getMethod(setterMethodName, String.class); //其中setterMethodName是setter方法的名稱,String型別。
3、invoke()方法:我理解為反射賦值,比如繼續上面的程式碼:method.invoke(car, carPropertyValue);其中Car類中有一個name變數,那個執行invoke方法後,物件car的name值則為carPropertyValue(在之前宣告過)。
總結:
forName返回Class,後需要newInstance例項化;
newInstance返回T;
getClass返回Class,後需要getMethod獲取方法;
getMethod返回Method;
invoke無返回值,需要用Method的物件來呼叫。
現在基礎知識很弱,處於寫程式碼全靠模仿,原理知之甚少的階段,需要一點一點的自學,加油。
相關文章
- java反射(1) 之class.forName(""), 類名.class, 物件.getClass()區別Java反射物件
- newInstance和new的區別(good)Go
- 過等保流程簡單說明
- 關於GeoWebCache的部署說明Web
- Java之.class和.getClass()的區別Java
- 關於DOCTYPE的使用和說明
- 關於NTP SERVER的配置說明Server
- 關於DedeCMS版本號的說明
- java-----instanceof與getClass的區別Java
- Http與Https的區別(精簡版包含協議說明)HTTP協議
- MySQL:關於ICP特性的說明(未完)MySql
- 【JAVA】Class.forName用法以及和new的區別Java
- 關於mssql中go等幾個關鍵字的用途及區別SQLGo
- 雲端計算和虛擬化的三個小區別簡單說明
- 關於支援OPenACC的編譯器說明編譯
- java 關於操作Collection的一點說明Java
- 關於 RPM 命令的權威說明
- 關於事務的英文說明 Transaction OverviewView
- 關於SAP abap程式開發的說明
- 關於BUGZILLA的說明和安裝
- Class.forName和ClassLoader.loadClass的區別
- 落實等級保護工作的意義簡單說明
- Oracle RESETLOGS 和 NORESETLOGS 區別說明Oracle
- 關於golang中下劃線(_)的語義說明Golang
- Oracle中關於PCTFREE和PCTUSED的說明Oracle
- Python 關於TCP簡介以及與UDP的區別PythonTCPUDP
- 外鏈與內鏈的區別:明確戰略,提升SEO效果
- SQL Server有關鎖升級的誤區說明SQLServer
- 關於Numba的執行緒實現的說明執行緒
- (12)非阻塞賦值與阻塞賦值區別(以簡單例子說明)賦值單例
- 《簡明 PHP 教程》01 關於 PHPPHP
- LGWR DBWR SMON 等程式說明
- 關於C/C++ int (*t5)[3] 指標型別說明C++指標型別
- httpd一之關於http工作模式的基本說明httpd模式
- 關於包(Package)應用規範的說明 (轉)Package
- keycloak~關於社群登入的過程說明
- 關於db_name,oracle_sid,service_names,global_names等的總結說明Oracle
- 【AMM】關於ASM中AMM引數說明ASM