例項化幾種方式 雜談 論例項化類的第六種方式

2021-10-14 17:17:16 字數 1004 閱讀 8099

你知道幾種例項化乙個類的方式?

new?反射?還有呢?

筆者總結了一下大概有以下六種方式:

(1)通過構造方法例項化乙個類;

(2)通過class例項化乙個類;

(3)通過反射例項化乙個類;

(4)通過轉殖例項化乙個類;

(5)通過反序列化例項化乙個類;

(6)通過unsafe例項化乙個類;

let us 直接上**:

public class instantialtest  catch (nosuchfieldexception e)  catch (illegalacces***ception e) 

}public static void main(string args) throws exception

private static user unserialize(user user1) throws exception

static class user implements cloneable, serializable

@override

protected object clone() throws clonenotsupportedexception }}

先不要急著往下看,你猜猜上面六種方式列印語句輸出各是多少?

不要看!

不要看!

不要看!

最後列印的結果是這樣:

10

1010

1010

0

意不意外?驚不驚喜?

最後一種通過unsafe例項化的類,裡面的age的值竟然是0,而不是10或者20。

這是因為呼叫unsafe的allocateinstance()方法只會給物件分配記憶體,並不會初始化物件中的屬性,所以int型別的預設值就是0。

例項化 Spring Bean 的幾種方式?

1.常規方式 通過構造器 建立 pojo 實體 user 類 public class user public void setid long id override public string tostring xml 檔案中配置 bean user class org.test.spring.i...

C 類例項化方式

c 中,例項化方式一般有兩種 1,直接定義物件,這時成員變數需要通過 來訪問,如 a a 2,定義乙個類指標,這時需要用到new方法,如 a a new a。訪問類的成員函式或者說是成員變數需要通過 但是這個時候,當物件使用完成之後,需要使用delete a 把該指標刪除。怎樣選擇 二者的記憶體分配...

Thinkphp 模型例項化幾種方式

在控制器要查詢資料就要例項化資料表,thinkphp 定義幾種模型例項化方式,下面詳細說說一下 1,直接例項化方法 user new home model usermodel info new admin model infomodel 2,d方法例項化方法 系統提供了乙個快捷方法d用於資料模型的例...