Java WEB —— Java提升

來源:互聯網
上載者:User

標籤:

Java 5.0新特性:

  • 枚舉:
enum Grade{  --> 相當於類    A("80~100"),B("70~80"),C("60~70"),D("59~0");  -->相當於調用枚舉的建構函式    private String value;    private Grade(String value){    this.value = value;}

  枚舉還可以定義抽象方法,並直接在枚舉中以匿名內部類方式執行個體化,如:

A("80~100"){    public void gradeclass(){        system.out.println("優");    }}
  • Junit測試外掛程式:可以通過Junit對某個類中的方法進行單獨測試,只要在方法名前面加入@Test即可。也可以加入@TestBefore和@Testafter測試整體。
  • Map的迭代遍曆:
Map map = new LinkedHashMap();map.put(....);....;....;for(Object obj : map.entrySet()){    map.Entry = (Entry)obj;    String key = (String)obj.getKey();    String value = (String)obj.getValue();}也可以是:for(Iterator it = map.entrySet().iterator();it.hasNext();){    map.Entry = (Entry)it.next();    String key = (String)obj.getKey();    String value = (String)obj.getValue();}
  • 反射技術:
    • 反射產生對象:
Class clazz = Class.forName("cn.bestsonic.demo.Person");  //解剖類的建構函式,並建立對象Constructor c = clazz.getDeclearConstructor(參數列表);Person p = (Person)c.newInstance(參數列表);

    若建構函式是私人的,則需要使用c.setAccessible(true)來暴力訪問。

    參數列表為類型,要寫String.class,int.class等。

    • 反射類方法:
Class clazz = class.forName("cn.bestsonic.demo.Person");  //反射類的方法並運行該方法
Method m = clazz.getDeclearMethod("方法名",參數列表位元組碼檔案);Person p = new Person(); //調用方法一定需要對象m.invoke(p,參數列表執行個體);

    也要注意暴力訪問。

    • 反射主函數:
Class clazz = Class.forName("cn.bestsonic.demo.Person");  //反射main方法
Method m = clazz.getMethod("main",String[] class);m.invoke(null,new Object[]{new String{"aa","bb"}});

      jdk1.5相容1.4,會優先將main(new String[]{"aa","bb"})拆分成main(string,string);造成參數錯誤,所以採用兩重封裝方式,使其自動拆分出String[]。也可以使用(Object)String[]{....}

    • 反射類成員:
Field f = clazz.getDeclearField("age");f.get(new Person());    //擷取欄位的值f.getType();    //擷取欄位的類型
  • 內省技術:Introspector --> 專用於javabean封裝資料

  什麼是javabean? --> 封裝使用者資料的類。什麼是javabean的屬性? --> 由get set組合數決定,包括從父類Object中繼承出來的(Object類中有getClass()方法,也算是一個屬性)。

    • 擷取bean的屬性:
BeanInfo = Intrspector.getBeanInfo(Person.class);    //這裡可再傳入Object.class來去除父類得到的屬性PropertyDescriptor[] pds = info.getPropertyDescriptors();可以通過屬性描述器,擷取屬性名稱,屬性的類型以及Get,Set方法,具體方法分別為:pds.getName(),getPropertyType(),getReadMethod(),getWriteMethod()
    • Beanutils架構:
      • 匯入jar包的過程:
        • 建立folder -> lib檔案夾。
        • 將beanutils開發包匯入lib檔案夾中。
        • 將記錄日誌的支援jar包commons-logging包匯入。
        • 右鍵匯入的jar包,選擇Build Path匯入,Add to Build Path(加入到開發環境中)。
      • 使用:
Person p = new Person();Beanutils.setProperty(p,"name","zhangsan");Beanutils.setProperty(p,"age","34");    //String自動轉換為int

  注意:Beanutils只支援String和八種基本類型之間的轉換,如果想要讓Beanutils支援自訂類型,可以使用轉換器:ConvertUtils.register(Converter轉換器,自訂類型位元組碼,如Data.class);然後用匿名內部類的方式實現Converter介面的convert方法,實現相應的轉換方法。

  注意:詳細可以參考Beanutils的手冊,可以找到已經寫好的DataLocalConverter轉換器。

      • 可以使用Beanutils.populate方法將使用者提交的Map填充至封裝類(Person)中。

Java WEB —— Java提升

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.