利用反射建立物件的一些問題

2021-08-30 22:09:46 字數 1378 閱讀 7403

所要構造的類如下所示

package getclass;

public class people

private people(string name)

public string getname()

public void setname(string name)

@override

public string tostring()

}

平常我們都是用new來構造大概這樣

people people = new people("蜘蛛俠");
但是還有種構造方法稱之為反射

trycatch(exception e)
這裡出了一些小小的問題

1.forname()中的引數只能是public的,而且乙個完整的類名需要包括包名。否則會丟擲classnofoundexception異常。

2.getconstructor()方法只接受預設構造(非無參構造)而如果想傳入有參的構造需要呼叫getdeclaredconstructor()函式。方法如下:

constructor c = pclass.getdeclaredconstructor(string.class);

people p1 = (people) c.newinstance("毒液");

又出現的一點問題該方法是私有無法呼叫

c.setaccessible(true);
通過該方法可以調取私有,值為 true 反射的物件在使用時取消訪問檢查。(不是true就能訪問false就不能訪問,true只是關閉了訪問檢查的開關)

其實private不代表安全,只是告訴你這個是private的不建議你訪問,如果出了事你得自己負責。c.setaccess ible(true)的意思是我覺得你知道你在幹什麼,那就去做吧。

就像乙個女孩穿著超短裙,下面套著安全褲。超短裙就是public是可以給你隨便看,但是下面的private就不是一般人看得了的。看了出了事可是要負責的。

運用反射不光可以構造物件,也可以修改物件的字段方法如下:

trycatch (exception e)
注意:getfield 只能獲取public的,包括從父類繼承來的字段。getdeclaredfield 可以獲取本類所有的字段,包括private的,但是不能獲取繼承來的字段。(獲取是獲取,就算獲取的private也不能直接訪問)

當然反射也可以呼叫方法:

trycatch (exception e)
總結一下反射就是通過乙個已知的物件(類,普通),呼叫他們的屬性和方法。

利用clear清除浮動的一些問題

下面這段 是用來清除浮動帶來的高度塌陷問題 clearfix beforequestion 1 上面的 的能夠實現css清除浮動的問題嗎?answer can t.因為clear屬性只能控制元素本身與前面的浮動元素的關係。在本例中,使用 before偽元素明顯位於所有子元素之前,故而clear屬性不...

建立redis集群,遇到的一些問題

之前在建立redis單機的時候,已經搭建過一次redis 現在是在ceontos環境下,搭建集群 我是參考如下貼的 1 在建立集群的時候,需要安裝ruby,來管理集群 wget tar zxvf ruby 2.3.5.tar.gz cd ruby 2.3.5 configure prefix opt...

String 一些問題

前言 等號 對於基本型別,比較的是值,對於引用型別,比較的是記憶體位址。1.在物件池中建立,如果常量池中已經存在則返回常量池中已經有的。private static void test1 結果 true 2.乙個在string pool中,乙個在堆中。private static void test...