反射和xml

反射機(jī)制的定義

Java反射機(jī)制是指在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語(yǔ)言的反射機(jī)制。
用一句話總結(jié)就是反射可以實(shí)現(xiàn)在運(yùn)行時(shí)可以知道任意一個(gè)類(lèi)的屬性和方法。

創(chuàng)建Class類(lèi)類(lèi)型對(duì)象

    Class c1 = new Student().getClass(); // 第一種
    Class c2 = Student.class;// 第二種
    Class  c3 = Class.forName("com.cn.java03.day07.Student(全類(lèi)名)");// 第三種

構(gòu)造方法

    Constructor[] constructors = c3.getConstructors(); // 獲得所有公共的構(gòu)造方法
    Constructor[] declaredConstructors = c3.getDeclaredConstructors(); // 獲得所有的構(gòu)造方法
    Constructor constructor =c3.getDeclaredConstructor(String.class,int.class);//獲得指定的構(gòu)造方法

通過(guò)反射創(chuàng)建對(duì)象

    Object o = c.newInstance(); // 通過(guò)空構(gòu)造
    Constructor constructor=c3.getDeclaredConstructor(String.class,int.class);//得到指定構(gòu)造方法
    constructor.setAccessible(true); //打破封裝,要不要無(wú)視訪問(wèn)權(quán)限
    Object o2 = constructor.newInstance("張三",20); //通過(guò)指定構(gòu)造創(chuàng)建對(duì)象

方法

    Method[] ms = c3.getDeclaredMethods(); //獲得本類(lèi)中所有的方法 
    Method[] methods = c3.getMethods(); // 獲得本類(lèi)及父類(lèi)中所有的公共方法
    Method md = c3.getMethod("show", int.class);//獲得指定的公共方法

空構(gòu)造如何給它賦值

  Constructor<User> con2=cla.getDeclaredConstructor();
  User user=con2.newInstance();
  Class<? extends User> class1 = user.getClass();
  Field field = class1.getDeclaredField("name");
  field.setAccessible(true);
  field.set(user, "溫婷");
  System.out.println(user);

xml

DOM4J解析

    // 第一步 得到閱讀器
    SAXReader reader = new SAXReader();
    // 第二步 解析文件 返回Document對(duì)象
    Document doc = reader.read(new File(文件路徑));

   List<Element> list = ele.elements();
    for (Element element : list) {
        List<Element> ele2 = element.elements();
        for (Element element2 : ele2) {
            System.out.println(element2.getText());
        }
    }

  Element addElement = ele.addElement("user");
    Element name = addElement.addElement("name");
    name.setText("wo");
    Element pwd = addElement.addElement("pwd");
    pwd.setText("576");

  List<Element> list = ele.elements("user");
    list.get(1).detach();

  Element ele2 = list.get(0);
    ele2.element("name").setText("yangyang");

保存

  OutputFormat format =OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    XMLWriter writer = new XMLWriter(new FileOutputStream("xxx.xml"), format);
    writer.write(doc);
    writer.close();

Xpath

  首先應(yīng)該要導(dǎo)包:jaxen.jar

  Node password=doc.selectSingleNode("http://user[3]/aa/password");//選出單個(gè)節(jié)點(diǎn)
  List<Node> list=doc.selectNodes("http://user");//選出多個(gè)節(jié)點(diǎn)
  for (Node node : list) {
System.out.println(node.getName());
  }

注意

如果有修改,則一定要保存,不然控制臺(tái)不會(huì)有效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 整體Retrofit內(nèi)容如下: 1、Retrofit解析1之前哨站——理解RESTful 2、Retrofit解析...
    隔壁老李頭閱讀 4,802評(píng)論 2 12
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,068評(píng)論 25 709
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,806評(píng)論 3 93
  • 總會(huì)不自主地陷入對(duì)外在,對(duì)物質(zhì)的追求,看到別人就想著去比較,我也要買(mǎi)這個(gè),我也要穿好看一點(diǎn),我也要怎么怎么樣,可是...
    x1x閱讀 148評(píng)論 0 0
  • 上帝- 請(qǐng)?jiān)试S我為世人許下一個(gè)誓愿- 請(qǐng)給我一道僅存的符咒- 在真理被謠言覆蓋時(shí)有一個(gè)被拯救的理由- 在冬日大雪飄...
    蘇夜來(lái)suenight閱讀 458評(píng)論 0 0

友情鏈接更多精彩內(nèi)容