反射和xml

反射機制的定義

Java反射機制是指在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
用一句話總結就是反射可以實現在運行時可以知道任意一個類的屬性和方法。

創建Class類類型對象

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

構造方法

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

通過反射創建對象

    Object o = c.newInstance(); // 通過空構造
    Constructor constructor=c3.getDeclaredConstructor(String.class,int.class);//得到指定構造方法
    constructor.setAccessible(true); //打破封裝,要不要無視訪問權限
    Object o2 = constructor.newInstance("張三",20); //通過指定構造創建對象

方法

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

空構造如何給它賦值

  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對象
    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

  首先應該要導包:jaxen.jar

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

注意

如果有修改,則一定要保存,不然控制臺不會有效果。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 整體Retrofit內容如下: 1、Retrofit解析1之前哨站——理解RESTful 2、Retrofit解析...
    隔壁老李頭閱讀 4,629評論 2 12
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,368評論 25 708
  • 轉自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,609評論 3 93
  • 總會不自主地陷入對外在,對物質的追求,看到別人就想著去比較,我也要買這個,我也要穿好看一點,我也要怎么怎么樣,可是...
    x1x閱讀 137評論 0 0
  • 上帝- 請允許我為世人許下一個誓愿- 請給我一道僅存的符咒- 在真理被謠言覆蓋時有一個被拯救的理由- 在冬日大雪飄...
    蘇夜來suenight閱讀 410評論 0 0