標籤:結果 his 不可靠訊號 ret 開頭 處理序間通訊 裡氏替換 伺服器端 監視器
知識點
1.java包
java.lang java.util java.math java.io java.regex:包,包中的類java.lang.Math java.math
Math(abs pow sqrt max min)
2.異常
異常定義,拋出異常的方法需要聲明,然後在調用該方法時使用try-catch捕獲異常。
在程式運行時違反java語義規則時的錯誤表示為異常,一類是java類庫內建的語義檢查(NPE)二類是java允許程式員擴充這種語義檢查
異常兩類:error、exception
異常,將可能出錯的代碼從正常代碼中分離出來,便於維護和修改。
免檢異常:數組訪問,除法等沒有放在try-catch語句中
必檢異常:代碼必須放到try-catch語句中,或再次拋出該異常
(免檢或必檢異常由引用部分決定,或程式員決定)
異常:定義,拋出,聲明,捕獲
定義:將上面的Exception改為Exception1
public void Exception1 extends Exception{
資料;
方法;
}
異常執行邏輯:
method3可能拋出Exception3、Exception2、Exception1
擷取異常資訊:
異常鏈:在catch中拋出異常
3.集合、線性表、棧、隊列、樹、圖、堆:泛型
集合(Set、List、Map)、棧、隊列使用線性表(數組、鏈表)來實現的
java集合架構
list與set的區別:set中不包含相同元素
LinkedHashSet能夠維護被插入元素的順序,即輸出元素的順序和輸入元素的順序相同。HashSet,不維護插入元素的順序,但比LinkedHashSet高效。
ArrayList、LinkedList:一個是數組實現,一個是鏈表實現。LinkedList提供了從兩端擷取、插入和刪除元素的方法。
向量類Vector,棧類Stack,堆棧隊列推薦LinkedList
LinkedList也可做隊列
映射:
4.nested-class和inner-class的區別:嵌套類和內部類的區別
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
StaticNestedClass是嵌套類
InnerClass是內部類
/////////////
nested-class和inner-class都是外層類的成員變數。只不過一個是靜態,一個是非靜態。
因此,nested-class和inner-class都可以被聲明private,public,protested或package
但是由靜態和非靜態不同可知:nested-class是和類相關的,而inner-class是和執行個體相關的。因此可以不執行個體化對象,就直接存取nested-class,而必須執行個體化類才能訪問inner-class。而nested-class不能訪問外層類的其他成員變數或方法,而inner-class則可以。
因為inner-class是非靜態成員變數,因此inner-class中不能再定義靜態變數或方法了。
:匿名內部類是否可以繼承其它類?是否可以實現介面?
匿名內部類可以繼承自其他類或介面。但在new Class(){}或new Interface(){}後不能再extends或implements
5.SSHeasyUI:forward、redirect
forward:URL->後台-> URL(瀏覽器中URL不變)
redirect:URL->後台->瀏覽器->URL(瀏覽器中URL要變)
6.進程、線程:多線程並存執行
:進程和線程的區別——線程是指進程內的一個執行單元,也是進程內的可調度實體。
(2)並發性:不僅進程之間可以並發執行,同一個進程的多個線程之間也可並發執行。
(1)調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位。
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源.
(4)系統開銷:在建立或銷毀進程時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或銷毀線程時的開銷。
:進程間的通訊方式及優缺點——
1)管道:資料只能單向流動,而且只能在具有親緣關係的進程之間使用。進程的親緣關係通常是指父子進程關係。在同一台電腦中。
2)命名(有名)管道(FIFO,隊列管道):具名管道不僅可在同一台電腦的不同進程之間傳輸資料,甚至能在跨越一個網路的不同電腦的不同進程之間,支援可靠的、單向或雙向的資料通訊
6)共用記憶體( shared memory ) :共用記憶體就是分配一塊能被其他進程訪問的記憶體。共用記憶體可以說是最有用的處理序間通訊方式,也是最快的IPC形式。首先說下在使用共用記憶體區前,必須通過系統函數將其附加到進程的地址空間或說為映射到進程空間。兩個不同進程A、B共用記憶體的意思是,同一塊實體記憶體被映射到 進程A、B各自的進程地址空間。進程A可以即時看到進程B對共用記憶體中資料的更新,反之亦然。由於多個進程共用同一塊記憶體地區,必然需要某種同步機制,互 斥鎖和訊號量都可以。採用共用記憶體通訊的一個顯而易 見的好處是效率高,因為進程可以直接讀寫記憶體,而不需要任何資料的拷貝。對於像管道和訊息佇列等通訊方式,則需要在核心和使用者空間進行四次的資料拷貝,而 共用記憶體則只拷貝兩次資料[1]:一次從輸入檔案到共用記憶體區,另一次從共用記憶體區到輸出檔案。實際上,進程之間在共用記憶體時,並不總是讀寫少量資料後就 解除映射,有新的通訊時,再重建立立共用記憶體地區。而是保持共用地區,直到通訊完畢為止,這樣,資料內容一直儲存在共用記憶體中,並沒有寫迴文件。共用記憶體 中的內容往往是在解除映射時才寫迴文件的。因此,採用共用記憶體的通訊方式效率是非常高的。
3)訊號量:訊號量是一個計數器,可以用來控制多個進程對共用資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共用資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。臨界資源:為某一時刻只能由一個進程或線程操作的資源,當訊號量的值大於或等於0時,表示可以供並發進程訪問的臨界資源數,當小於0時,表示正在等待使用臨界資源的進程數。更重要的是,訊號量的值僅能由PV操作來改變。
4)訊息佇列:訊息佇列是有訊息的鏈表,存放在核心中並由訊息佇列標識符標識。訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式位元組流以及緩衝區大小受限等缺點。
5)訊號 ( sinal ) :訊號是在軟體層次上對中斷機制的一種類比,在原理上,一個進程收到一個訊號與處理器收到一個插斷要求可以說是一樣的。訊號是非同步,一個進程不必通過任何操作來等待訊號的到達,事實上,進程也不知道訊號到底什麼時候到達。訊號是處理序間通訊機制中唯一的非同步通訊機制,可以看作是非同步通知,通知接收訊號的進程有哪些事情發生了。訊號機制經過POSIX即時擴充後,功能更加強大,除了基本通知功能外,還可以傳遞附加資訊。訊號事件的發生有兩個來源:硬體來源(比如我們按下了鍵盤或者其它硬體故障);軟體來源。
訊號分為可靠訊號和不可靠訊號,即時訊號和非即時訊號。
進程有三種方式響應訊號:
忽略訊號
捕捉訊號
執行預設操作
7)通訊端( socket ) :通訊端也是一種處理序間通訊機制,與其他通訊機制不同的是,它可用於不同主機間的進程通訊。
進程同步、ajax請求非同步:
A,B做同一件事,A不等B去做另一件事。當B通知來時再一起去做
安全執行緒的類,synchronized類:多線程對共用資源的訪問
線程啟動,運行後,由虛擬機器調動run()方法
join使某線程優先執行完。
線程任務內再啟動一個線程任務,兩個線程並存執行。
在並行輸出中,當數值輸出到50時,就讓thread1執行,其他線程等待它執行完再執行。
i==2的結果:
線程池
建立線程池執行個體,然後啟動多個線程對共用資源進行訪問:線程池
100線程,執行後應該是100(每個任務很快執行,下個任務讀到的是上個任務的結果)
Thread.sleep(5),每個線程任務讀到的不是前面任務的結果,可能多個任務讀到同一個值,然後再將結果寫回,因此結果不確定。(本機運行結果為2)
線程,共用資源(方法)
一、多線程訪問共用資源
二、對共用資源進行顯示加鎖
三、訪問共用資源的線程數
處理序間通訊、java內建監視器
線程狀態
同步集合
7.多態
物件導向:三大特性、六大原則(單一職責,迪米特(最少知道-高內聚低耦合),依賴置換(面向介面編程),介面隔離原則(介面應盡量小和簡潔),裡氏替換,開放封閉)、3大目標(易維護,易擴充,易複用)
什麼是多態
物件導向的三大特性:封裝、繼承、多態。從一定角度來看,封裝和繼承幾乎都是為多態而準備的。
多態的定義:指允許不同類的對象對同一訊息做出對應響應。即同一訊息可以根據“發送對象”的不同而採用多種不同的行為方式。(發送訊息就是方法調用)
實現多態的技術稱為:動態綁定(dynamic binding),是指在執行期間判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法。
多態存在的三個必要條件
一、要有繼承;
二、要有重寫;
三、父類引用指向子類對象。
多態的作用:消除類型之間的耦合關係。
現實中,關於多態的例子不勝枚舉。比方說按下 F1 鍵這個動作,如果當前在 Flash 介面下彈出的就是 AS 3 的協助文檔;如果當前在 Word 下彈出的就是 Word 協助;在 Windows 下彈出的就是 Windows 協助和支援。同一個事件發生在不同的對象上會產生不同的結果。
多態的好處:
1.可替換性(substitutability)。多態對已存在代碼具有可替換性。例如,多態對圓Circle類工作,對其他任何圓形幾何體,如圓環,也同樣工作。
2.可擴充性(extensibility)。多態對代碼具有可擴充性。增加新的子類不影響已存在類的多態性、繼承性,以及其他特性的運行和操作。實際上新加子類更容易獲得多態功能。例如,在實現了圓錐、半圓錐以及半球體的多態基礎上,很容易增添球體類的多態性。
3.介面性(interface-ability)。多態是超類通過方法簽名,向子類提供了一個共同介面,由子類來完善或者覆蓋它而實現的。
4.靈活性(flexibility)。它在應用中體現了靈活多樣的操作,提高了使用效率。
5.簡化性(simplicity)。多態簡化對應用軟體的代碼編寫和修改過程,尤其在處理大量對象的運算和操作時,這個特點尤為突出和重要。
Java中多態的實現方式:介面實現,繼承父類進行方法重寫,同一個類中進行方法重載。
8.同步和非同步去區別
例子:你叫我去吃飯,我聽到了就立刻和你去吃飯。如果我沒有聽到,你就會一直叫我,直到我聽見和你一起去吃飯。如果我有事,你會等待,這個過程叫同步;非同步過程指你叫我去吃飯,然後你就去吃飯了,而不管我是否和你一起去吃飯。而我得到訊息後可能立即就走,也可能過段時間再走。
內容:在電腦領域,同步就是指一個進程在執行某個請求的時候,若該請求需要一段時間才能返回資訊,那麼這個進程將會一直等待下去,直到收到返回資訊才繼續執行下去;非同步是指進程不需要一直等下去,而是繼續執行下面的操作,不管其他進程的狀態。當有訊息返回時系統會通知進程進行處理,這樣可以提高執行的效率。
同步問題多發生在多線程環境中的資料共用問題。即當多個線程需要訪問同一個資源時,它們需要以某種順序來確保該資源在某一特定時刻只能被一個線程所訪問,而其他線程等待。如果使用非同步,A在使用共用資源a,B請求使用a,如果是同步:B會等待知道A回應。如果是非同步:B直接就使用a。
:實現同步的機制主要有臨界區、互斥、訊號量和事件
臨界區:通過對多線程的序列化來訪問公用資源或一段代碼,速度快,適合控制資料訪問。在任意時刻只允許一個線程對共用資源進行訪問,如果有多個線程試圖訪問公用資源,那麼在有一個線程進入後,其他試圖訪問公用資源的線程將被掛起,並一直等到進入臨界區的線程離開,臨界區在被釋放後,其他線程才可以搶佔。
互斥量:採用互斥對象機制。 只有擁有互斥對象的線程才有訪問公用資源的許可權,因為互斥對象只有一個,所以能保證公用資源不會同時被多個線程訪問。互斥不僅能實現同一應用程式的公用資源安全共用,還能實現不同應用程式的公用資源安全共用 .互斥量比臨界區複雜。因為使用互斥不僅僅能夠在同一應用程式不同線程中實現資源的安全共用,而且可以在不同應用程式的線程之間實現對資源的安全共用。
訊號量:它允許多個線程在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大線程數目 。訊號量對象對線程的同步方式與前面幾種方法不同,訊號允許多個線程同時使用共用資源,這與作業系統中的PV操作相同。它指出了同時訪問共用資源的線程最大數目。它允許多個線程在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大線程數目。
事件:通過通知操作的方式來保持線程的同步,還可以方便實現對多個線程的優先順序比較的操作 。
補充:
PV操作及訊號量的概念都是由荷蘭科學家E.W.Dijkstra提出的。訊號量S是一個整數,S大於等於零時代表可供並發進程使用的資源實體數,但S小於零時則表示正在等待使用共用資源的進程數。
訊號量:S。0為分界區,大於等於0,則訊號量的隊列中無等待進程,小於0,則訊號量的隊列中有等待進程。
P操作申請資源:
(1)S減1;
(2)若S減1後仍大於等於零,則進程繼續執行;
(3)若S減1後小於零,則該進程被阻塞後進入與該訊號相對應的隊列中,然後轉入進程調度。
V操作 釋放資源:
(1)S加1;
(2)若相加結果大於零,則進程繼續執行;
(3)若相加結果小於等於零,則從該訊號的等待隊列中喚醒一個被阻塞的等待進程,然後再返回原進程繼續執行或轉入進程調度。
總結:
1) 互斥量與臨界區的作用非常相似,但互斥量是可以命名的,也就是說它可以跨越進程使用。所以建立互斥量需要的資源更多,所以如果只為了在進程內部是用的話使用臨界區會帶來速度上的優勢並能夠減少資源佔用量。因為互斥量是跨進程的互斥量一旦被建立,就可以通過名字開啟它。
2) 互斥量(Mutex),號誌(Semaphore),事件(Event)都可以被跨越進程使用來進行同步資料操作,而其他的對象與資料同步操作無關,但對於進程和線程來講,如果進程和線程在運行狀態則為無訊號狀態,在退出後為有訊號狀態。所以可以使用WaitForSingleObject來等待進程和線程退出。
3) 通過互斥量可以指定資源被獨佔的方式使用,但如果有下面一種情況通過互斥量就無法處理,比如現在一位使用者購買了一份三個並發訪問許可的資料庫系統,可以根據使用者購買的訪問許可數量來決定有多少個線程/進程能同時進行資料庫操作,這時候如果利用互斥量就沒有辦法完成這個要求,號誌對象可以說是一種資源計數器。
9.EJB(Enterprise JavaBean)
EJB是sun的JavaEE伺服器端組件模型,設計目標與核心應用是部署分布式應用程式。簡單來說就是把已經編寫好的程式(即:類)打包放在伺服器上執行。憑藉java跨平台的優勢,用EJB技術部署的分布式系統可以不限於特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定義了一個用於開發基於組件的企業多重應用程式的標準。其特點包括網路服務支援和核心開發工具(SDK)。 在J2EE裡,Enterprise Java Beans(EJB)稱為Java 企業Bean,是Java的核心代碼,分別是會話Bean(Session Bean),實體Bean(Entity Bean)和訊息驅動Bean(MessageDriven Bean)。在EJB3.0推出以後,實體Bean被單獨分了出來,形成了新的規範JPA。
10.J2EE
J2EE(Java2Platform,EnterpriseEdition)是一個為大企業主機級的計算類型而設計的Java平台。Sun微系統(與其工業夥伴一起,例如IBM)設計了J2EE,以此來簡化在瘦客戶級環境下的應用開發。由於創造了標準的可重用模組組件以及由於構建出能自動處理編程中多方面問題的等級結構,J2EE簡化了應用程式的開發,也降低了對編程和對受訓的程式員的要求。
J2EE組件和“標準的”Java類的不同點在於:它被裝配在一個J2EE應用中,具有固定的格式並遵守J2EE規範,由J2EE伺服器對其進行管理。J2EE規範是這樣定義J2EE組件的:用戶端應用程式和applet是運行在用戶端的組件;Java Servlet和Java Server Pages (JSP) 是運行在伺服器端的Web組件;Enterprise Java Bean (EJB )組件是運行在伺服器端的業務組件。
J2EE典型的四層結構:
運行在用戶端機器上的客戶層組件
運行在J2EE伺服器上的Web層組件
運行在J2EE伺服器上的商務邏輯層組件
運行在EIS伺服器上的公司資訊系統(Enterprise information system)層軟體
J2EE是Java 2 enterprise edition是Java的一種企業版用於企業級的應用服務開發
J2SE是Java 2 standard edition是Java的標準版,用於標準的應用開發
J2ME是Java 2 Micro Edition是Java的微型版,常用於手機上的開發
J2EE,J2SE,J2ME是java針對不同的的使用來提供不同的服務,也就是提供不同類型的類庫。
11.資料類型向下自動轉換
short i=1;
i+=1;
//i=(short)i+1;//short會被轉化成int
Object i1 = i;//基本類型自動轉換成封裝類
if(i1 instanceof Short){
System.out.println("yes");
}
12.類中變數也是對象
class A{
String s = new String("test");
}
建立該對象,產生了幾個對象?
13.抽象類別
抽象類別可以有建構函式,但不應該有公用的建構函式(FxCop.設計規則)。FxCop.設計規則中說,如果抽象類別需要建構函式,那麼應該聲明為“protected”。
(1)初始化抽象類別的成員;
(2)為繼承自它的子類使用。
抽象類別可以繼承實體類,但是和實體類的繼承一樣,也要求父類可繼承(不是final),並且擁有子類可訪問到的構造器(不是private)
14.位元組
一個byte由八個位組成,如00000000,其中,前7位表示數值,第8位是符號位(0為正,1為負)。最大的正數就是01111111;最小的負數是11111111。
但負數會到-128。這不得不崇拜偉大的印度阿三們。
上述的描述會出現一個問題,就是0,會出現一個+0和一個-0。印度人他們規定-0為-128,這樣就與電腦的補碼(程式都是按補碼啟動並執行)完美的結合在一起。
15.位元組流,字元流,檔案
為知檔案模組。
16.@Override @Overload
Properties-->Java Compiler-->compiler compliance level
1.5重寫介面會報錯,需1.6及以上
存取權限不能比父類中被重寫的方法的存取權限更低。
父類的成員方法只能被它的子類重寫。
聲明為final的方法不能被重寫。
聲明為static的方法不能被重寫,但是能夠被再次聲明,即靜態方法屬於類。
如果不能繼承一個方法,則不能重寫這個方法。
/////////////////////
A,B類中可以有同名的靜態方法:
靜態方法:A.c,B.c B繼承A,A=B,調用A.c,依然是調用A中的方法c,而不是B中的方法c
16,GC
垃圾回收機制有:
分代複製記憶體回收
標記記憶體回收
增量記憶體回收。
17,JVM
:class載入機制?
:java 序列化,如何? java 序列化?
序列化就是一種用來處理物件流程的機制,所謂物件流程也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為瞭解決在對對象進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現 Serializable 介面,該介面沒有需要實現的方法,
implements Serializable 只是為了標註該對象是可被序列化的,然後可以使用一個輸出資料流來輸出對象。
18,String類
查看String類源碼
private final char value[];
public String() {
this.value = new char[0];
//this.value[0] = ‘a‘;//申請了記憶體,沒有賦初值
}
19,byte,int,char等基礎資料型別 (Elementary Data Type)
底層是如何處理的?
20,JSP
:jsp是一個servlet,它如何獲得request,session,application等對象?
:瀏覽器請求URL1,URL2,在伺服器如何判斷URL1,URL2是同一個session?
:瀏覽器請求URL1,伺服器中頁面jsp1,在頁面中有URL2,直接在伺服器內進行請求,伺服器中頁面jsp2或servlet2,此時,jsp2或servlet2中的request是由jsp1中的request而來嗎?
:Servlet 執行時一般實現哪幾個方法?
public ServletConfig getServletConfig()
public void init(ServletConfig config)
public void service(ServletRequest request,ServletResponse response)
public void destroy()
public String getServletInfo()
21,XML定義文檔定義有幾種形式?它們之間有何本質區別?解析 XML 文檔有哪幾種方式?
a: 兩種形式 dtd schema
b: 本質區別:schema本身是xml的可以被XML解析器解析(這也是從DTD上發展 schema的根本目的)
c:DOM,SAX,STAX 等
DOM:處理大型檔案時其效能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構佔用的記憶體較多,而且DOM必須在解析檔案之前把整個文檔裝入記憶體,適合對 XML 的隨機訪問
SAX:不現於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML檔案,不需要一次全部裝載整個檔案。當遇到像檔案開頭,文檔結束,或者標籤開頭與標籤結束時,它會觸發一個事件,使用者通過在其回調事件中寫入處理代碼來處理 XML 檔案,適合對 XML 的順序訪問
STAX:Streaming API for XML (StAX)
22,常用名稱解釋
web容器:給處於其中的應用程式組件( JSP, SERVLET)提供一個環境,使 JSP,SERVLET 能直接在容器
中進行介面互動,不必關注其它系統問題。主要有WEB伺服器來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的介面嚴格遵守J2EE規範中的WEBAPPLICATION標準。我們把遵守J2EE標準的WEB伺服器就叫做J2EE中的WEB容器。
EJB 容器:Enterprise java bean容器。更具有行業領域特色。他提供給運行在其中的EJB組件各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的介面來獲得系統層級的服務。例如郵件服務、交易管理。
JNDI:(JavaNamingDirectoryInterface)JAVA命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程式在其上面留下自己的索引,從而滿足快速尋找和定位分布式應用程式的功能。
JMS:( Java Message Service) JAVAMessage Service。主要實現各個應用程式之間的通訊。包括點對點和廣播。
JTA:( Java Transaction API) JAVA事務服務。提供各種分散式交易服務。應用程式只需調用其提供的介面即可。
JAF:( Java Action FrameWork) JAVA 安全認證架構。提供一些安全控制方面的架構。讓開發人員通過各種部署和自訂實現自己的個性安全控制策略。
RMI/IIOP:(RemoteMethodInvocation)對象請求中介協議,他們主要用於通過遠程調用服務。例如,遠程有一台電腦上運行一個程式,它提供股票分析服務,我們可以在本機電腦上實現對其直接調用。當然這是要通過一定的規範才能在異構的系統之間進行通訊。 RMI是JAVA特有的。
23,Object類
一個構造方法+11個方法
:clone()
實現了Cloneable介面,表示Object.clone()方法可以合法地對該類執行個體進行按欄位複製。
在重寫clone()方法時,有預設行為,super.clone(),負責產生正確大小的空間,並逐位複製。
24,反射在運行時,動態擷取和調用類或對象中的屬性和方法Class<?> class1=null‘擷取Class.forName("java.lang.String");String.class;new String().getClass;1、獲得該類的包、類名class1.getName();2、擷取父類和實現的介面class1.getSuperclass();class1.getInterfaces();3、擷取建構函式,建構函式的參數格式,參數類型Constructors<?> cons[] =class1.getConstructors();Class<?> c1= cons[0].getParameterTypes();4、擷取類的全部屬性,屬性的修飾符、類型Field[] field=class1.getDeclaredFields();5、擷取父類或介面中的屬性class1.getFields();6、擷取類中的全部方法,方法修飾符、傳回型別、參數、拋出的異常Method[] method = class1.getMethods();method[0].getModifiers();method[0].getReturnType();Class<?> para[] =method[0].getParameterTypes();method[0].getExceptionTypes();
參數為字串數組返回的值為:[Ljava.lang.String;7、擷取某一個方法class1.getMethod("add",Object.class);
調用parameterType[]parameterValue[]Method method = class1.getMethod("methodName",int.class)method.invoke(class1.newInstance(),1);
應用運行時對private屬性直接賦值動態代理運行時,將字串放入ArrayList<int>修改數組的大小原廠模式
資料類型:String資料類型字串:"String"Class<?> type = field[i].getType();String typeName = type.getName();Class<?> typeClass = getPackClass(typeName);
// 基本類型對應的類static Class<?> getPackClass(String typeName) {if (typeName == null) {return null;}switch (typeName) {case "byte": {return byte.class;}case "short": {return short.class;}case "int": {return int.class;}case "long": {return long.class;}case "float": {return float.class;}case "double": {return double.class;}case "char": {return char.class;}case "boolean": {return boolean.class;}default:try {return Class.forName(typeName);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}}}
Java知識點