關於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之.class和.getClass()的區別Java
- java-----instanceof與getClass的區別Java
- 過等保流程簡單說明
- 關於 Jupyter 的使用說明
- Http與Https的區別(精簡版包含協議說明)HTTP協議
- Class.forName和ClassLoader.loadClass的區別
- 關於DedeCMS版本號的說明
- 關於部落格更新說明
- MySQL:關於ICP特性的說明(未完)MySql
- Python 關於TCP簡介以及與UDP的區別PythonTCPUDP
- 關於支援OPenACC的編譯器說明編譯
- 落實等級保護工作的意義簡單說明
- 雲端計算和虛擬化的三個小區別簡單說明
- 關於xtrabackup --slave-info引數的說明
- keycloak~關於社群登入的過程說明
- 關於Numba的執行緒實現的說明執行緒
- SQL Server有關鎖升級的誤區說明SQLServer
- 外鏈與內鏈的區別:明確戰略,提升SEO效果
- (12)非阻塞賦值與阻塞賦值區別(以簡單例子說明)賦值單例
- 《簡明 PHP 教程》01 關於 PHPPHP
- CXP 協議中upconnection 與downconnection的說明及其區別協議
- eachdemo/rbac 的簡單說明
- 《轉》ParameterizedType getGenericSuperclass 獲取泛型引數;class getClass區別Zed泛型
- 關於 UiPath Activities 中文手冊的一些說明UI
- 前端元件wolfTable中關於表格凍結部分的說明前端元件
- 關於88e1111 phy模組的配置說明
- 關於 navigator.mediaDevices.getUserMedia 的輸入引數說明dev
- 區塊鏈預言機(3)關鍵點說明區塊鏈
- mssql sqlserver updatetext關鍵字應用簡介說明SQLServer
- mssql sqlserver 關鍵字 GROUPING用法簡介及說明SQLServer
- nginx關於root與alias的區別Nginx
- 關於C與C++的區別C++
- Android關於buildToolVersion與CompileSdkVersion的區別AndroidUICompile
- 關於gcc、make和CMake的區別GC
- CentOS 7升級核心簡明說明CentOS
- MySQL:關於排序order by limit值不穩定的說明(1)MySql排序MIT
- 關於MySQL中的8個 character_set 變數說明MySql變數
- 關於 Laravel Conf China 2019 大會因故取消的說明Laravel