XML之反射

简介: XML之反射

                                 

学习XML的反射,就必须了解类类的使用。有一句话牢记:一切的反射从类类开始

一.类类

一.类类的概念

在Java反射(reflection)中,Class类被称为“类类”,每个Java类在内存中都有一个对应的Class类实例对象,可以通过Java的反射机制获取。

二.类类的使用

三种:1.getClass()

          2.类.Class

          3.Class.forName

通过这些方法我们可以得到Java类的Class实例对象。

       代码如下:

       这是一个实体类,封装了有参,无参,私有的构造方法。

       

package com.lya.xml3;
public class Student {
  private String sid;
  private String sname;
  public Integer age;
  static{
    System.out.println("加载进jvm中!");
  }
  public Student() {
    super();
    System.out.println("调用无参构造方法创建了一个学生对象");
  }
  public Student(String sid) {
    super();
    this.sid = sid;
    System.out.println("调用带一个参数的构造方法创建了一个学生对象");
  }
  public Student(String sid, String sname) {
    super();
    this.sid = sid;
    this.sname = sname;
    System.out.println("调用带二个参数的构造方法创建了一个学生对象");
  }
  @SuppressWarnings("unused")
  private Student(Integer age) {
    System.out.println("调用Student类私有的构造方法创建一个学生对象");
    this.age = age;
  }
  public String getSid() {
    return sid;
  }
  public void setSid(String sid) {
    this.sid = sid;
  }
  public String getSname() {
    return sname;
  }
  public void setSname(String sname) {
    this.sname = sname;
  }
  public void hello() {
    System.out.println("你好!我是" + this.sname);
  }
  public void hello(String name) {
    System.out.println(name + "你好!我是" + "您爹");
  }
  @SuppressWarnings("unused")
  private Integer add(Integer a, Integer b) {
    return new Integer(a.intValue() + b.intValue());
  }
}

三.类类的获取方式/获取无参构造

运行结果:

 

 

代码:

package com.lya.xml3;
/**
 * 类类的获取方式/获取无参构造
 * 
 * @author 李永安
 *
 */
public class Demo1 {
  public static void main(String[] args) throws Exception {
    // 获取类类的方式
    // ①Classforname
    Student student = new Student();
    Class c1 = Class.forName("com.lya.xml3.Student");
    System.out.println(c1);
    // ②getclass
    Class s1 = student.getClass();
    System.out.println(s1);
    // ③class
    Class s2 = Student.class;
    System.out.println(s2);
    // 获取无参构造
    // 基于类类基础上:实例对象
    Student student1 = (Student) c1.newInstance();
    System.out.println(student1);// com.lya.xml3.Student@26f0a63f
  }
}

二.反射

一.什么是反射?

Java反射是指在运行时动态地获取类的信息以及动态调用对象的方法和属性。Java反射API包括java.lang.Class类、java.lang.reflect包以及java.lang.reflect.Method、java.lang.reflect.Field、java.lang.reflect.Constructor等类,这些类提供了获取类的信息、动态创建对象、调用对象的方法和属性等功能。

简而言之就是:通过反射能够获取到类的所有信息

二.使用反射

调用公有,私有 的参构造方法运行结果如下:

代码如下:

package com.lya.xml3;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/**
 * 反射动态方法使用
 * 
 * @author 李永安
 *
 */
public class Demo3 {
  public static void main(String[] args) throws ClassNotFoundException, Exception {
    // 创造对象
    Student student = new Student();
    // 使用类类
    Class c1 = Class.forName("com.lya.xml3.Student");
    // 一,无参方法
    Method m1 = c1.getMethod("hello");
    // obj实例 args参数
    Object invoke = m1.invoke(student);
    System.out.println(invoke);
    // 二,有参方法
    Method m2 = c1.getMethod("hello", String.class);
    // obj实例 args参数
    Object invoke2 = m2.invoke(student, "朱俊良");
    System.out.println(invoke2);
    // 三,有参私有方法
    Method m3= c1.getDeclaredMethod("add", Integer.class,Integer.class);
    //这里还要用setAccessible打开访问私用权限
    m3.setAccessible(true);
    // obj实例 args参数
    Object invoke3= m3.invoke(student, 1,2);
    System.out.println(invoke3);
  }
}

                       好了今天就分享到这了,希望能ban我们下期再见!!!

目录
相关文章
|
5月前
|
XML 数据格式
xml反射
xml反射
31 0
|
XML 数据格式
XML学习总结——SAXReader解析xml文件,实现反射 代码实例
XML学习总结——SAXReader解析xml文件,实现反射 代码实例
214 0
|
XML Java 关系型数据库
java+反射+多线程+生产者消费者模式+读取xml(SAX)入数据库mysql-【费元星Q9715234】
java+反射+多线程+生产者消费者模式+读取xml(SAX)入数据库mysql-【费元星Q9715234】 说明如下,不懂的问题直接我【费元星Q9715234】 1.反射的意义在于不将xml tag写死在sax 的代码中,直接配置到一个bean就可以了。
1212 0
|
XML C# 数据格式
C#对象序列化XML时报错:反射类型XXX时出错
弄了半天,查了很多资料,原来是类中没有含有参数为空的构造函数造成。如果要根据xmlserializer来把对象序列化成XML,必须至少有一个参数为空的构造函数,否则就会报该类型错误。
1694 0
|
10天前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
13 0
|
21天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
20 0
|
23天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
2月前
|
XML 关系型数据库 MySQL
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
12 0
|
2月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
12 0