常用知識點

Objects.equals(Object,Object)

防止參數(shù)為空垫桂,2者都為空返回ture,一個為null返回false

重寫一個equals的完整實例 (可以使用快捷鍵,快速生成,必須重新定義hashCode)

equals相同咒劲,hashCode也要相同

 @Override
    public boolean equals(Object obj) {

        if (this==obj)return  true;//代碼優(yōu)化继薛,

        if (obj==null) return false;

//如果equals在每個子類中有所改變盖腿,就使用getClass檢測
        if (getClass()!=obj.getClass()) return false;
     
      //如果擁有統(tǒng)一語義爽待,就使用instance of
        if (!(obj instanceof CategoryBean)) return false;
        
        CategoryBean bean = (CategoryBean) obj;
        
        return id==bean.id &&Objects.equals(name,bean.name);
    }

枚舉類型

public enum Size {

        SMALL,
        MEDIUM,
        LARGE,
        EXTRA_LARGE
}

//返回String
Size.SMALL.toString();
//String 轉(zhuǎn)化枚舉
 Size s = Enum.valueOf(Size.class, "SMALL");

        Size[] values = Size.values();//返回枚舉數(shù)組

        Size.SMALL.ordinal();//枚舉常量的位置,0開始

//出現(xiàn)在other之前翩腐,返回負數(shù)鸟款,=返回0,否則返回正數(shù)
        Size.SMALL.compareTo(Size.LARGE);

反射對象

參考地址 http://mp.weixin.qq.com/s/bDe-6KiTbazC5FhUi-Z65A
一般書上的定義是這樣的:JAVA反射機制是在運行狀態(tài)中茂卦,對于任意一個類何什,都能夠知道這個類的所有屬性和方法;對于任意一個對象等龙,都能夠調(diào)用它的任意方法和屬性处渣;這種動態(tài)獲取信息以及動態(tài)調(diào)用對象方法的功能稱為java語言的反射機制,這幾句解釋說明了反射的作用蛛砰,動態(tài)的跟類進行交互罐栈,比如獲取隱藏屬性,修改屬性泥畅,獲取對象荠诬,創(chuàng)建對象或者方法等等,總之就一句話:

反射是一種具有與類進行動態(tài)交互能力的一種機制 為什么要強調(diào)動態(tài)交互呢?

因為一般情況下都是動態(tài)加載柑贞,也就是在運行的時候才會加載方椎,而不是在編譯的時候,在需要的時候才進行加載獲取钧嘶,或者說你可以在任何時候加載一個不存在的類到內(nèi)存中棠众,然后進行各種交互,或者獲取一個沒有公開的類的所有信息,換句話說有决,開發(fā)者可以隨時隨意的利用反射的這種機制動態(tài)進行一些特殊的事情摄欲。

  //根據(jù)類型來創(chuàng)建一個對象
        try {
            Class s = Class.forName("com.zcits.highwayplatform.model.bean.ChartBean");
            Object beans =  s.newInstance();//調(diào)用默認構(gòu)造器構(gòu)建對象

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

因此反射的組成一般有下面幾個方面組成:

1.java.lang.Class.java:類對象;
2.java.lang.reflect.Constructor.java:類的構(gòu)造器對象疮薇;
3.java.lang.reflect.Method.java:類的方法對象;
4.java.lang.reflect.Field.java:類的屬性對象我注;

實例參考
public class Student {
    private int age;//年齡
    private String name;//姓名
    private String address;//地址
    private static String sTest;
    public Student() {
        throw new IllegalAccessError("Access to default Constructor Error!");
    }
    private Student(int age, String name, String address) {
        this.age = age;
        this.name = name;
        this.address = address;
        sTest = "測試反射";
    }
    private int getAge() {
        return age;
    }
    private void setAge(int age) {
        this.age = age;
    }
    private String getName() {
        return name;
    }
    private void setName(String name) {
        this.name = name;
    }
    private String getAddress() {
        return address;
    }
    private void setAddress(String address) {
        this.address = address;
    }
    private static String getTest() {
        return sTest;
    }
}

反射運行

public static void main(String[] args) {

        try {

        Class<?> clazz = Class.forName("ClassLoader.Student");
         //返回本地的這個構(gòu)造器
        Constructor constructors=clazz.getDeclaredConstructor(int.class,String.class,String.class);
        constructors.setAccessible(true);//申請權(quán)限訪問私有

        //利用構(gòu)造器生成對象實例
        Object mStudent=constructors.newInstance(27,"小文","北京市海定區(qū)XX號");
        System.out.println(mStudent.toString());

        //獲取隱藏的int屬性
        Field mAgeField=clazz.getDeclaredField("age");
        mAgeField.setAccessible(true);//申請權(quán)限訪問私有
        int age= (int) mAgeField.get(mStudent);
        System.out.println("年齡為:"+age);

        //調(diào)用隱藏的方法
        Method getAddressMethod=clazz.getDeclaredMethod("getAge");
        getAddressMethod.setAccessible(true);
        int newage= (int) getAddressMethod.invoke(mStudent);//調(diào)用實例方法一定需要一個類的實例
        System.out.println("年齡為:"+newage);

        //調(diào)用靜態(tài)方法
        Method getTestMethod=clazz.getDeclaredMethod("getTest");
        getTestMethod.setAccessible(true);
        String result= (String) getTestMethod.invoke(null);//靜態(tài)方法的話按咒,那么第一個參數(shù)是為null
        System.out.println("調(diào)用靜態(tài)方法:"+result);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市但骨,隨后出現(xiàn)的幾起案子励七,更是在濱河造成了極大的恐慌,老刑警劉巖奔缠,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掠抬,死亡現(xiàn)場離奇詭異,居然都是意外死亡校哎,警方通過查閱死者的電腦和手機两波,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闷哆,“玉大人腰奋,你說我怎么就攤上這事”д” “怎么了劣坊?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屈留。 經(jīng)常有香客問我局冰,道長,這世上最難降的妖魔是什么灌危? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任康二,我火速辦了婚禮,結(jié)果婚禮上乍狐,老公的妹妹穿的比我還像新娘赠摇。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布藕帜。 她就那樣靜靜地躺著烫罩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洽故。 梳的紋絲不亂的頭發(fā)上贝攒,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機與錄音时甚,去河邊找鬼隘弊。 笑死,一個胖子當著我的面吹牛荒适,可吹牛的內(nèi)容都是我干的梨熙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼刀诬,長吁一口氣:“原來是場噩夢啊……” “哼咽扇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起陕壹,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤质欲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后糠馆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘶伟,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年又碌,在試婚紗的時候發(fā)現(xiàn)自己被綠了九昧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡毕匀,死狀恐怖耽装,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情期揪,我是刑警寧澤掉奄,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站凤薛,受9級特大地震影響姓建,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缤苫,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一速兔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧活玲,春花似錦涣狗、人聲如沸谍婉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穗熬。三九已至,卻和暖如春丁溅,著一層夾襖步出監(jiān)牢的瞬間唤蔗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工窟赏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妓柜,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓涯穷,卻偏偏與公主長得像棍掐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拷况,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容