网站建设资讯

NEWS

网站建设资讯

Java中怎么利用反射获取class对象

这篇文章将为大家详细讲解有关Java中怎么利用反射获取class对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、虚拟主机、营销软件、网站建设、宁强网站维护、网站推广。

1、获取Class对象

在 Java API 中,提供了获取 Class 类对象的三种方法:

第一种,使用 Class.forName 静态方法。

前提:已明确类的全路径名。

第二种,使用 .class 方法。

说明:仅适合在编译前就已经明确要操作的 Class

第三种,使用类对象的 getClass() 方法。

适合有对象示例的情况下

User类

package com.reflection; /** * Created by Liuxd on 2018-08-15. */public class User {  private String name;  private Integer age;   public User() {  }   public User(String name, Integer age) {    this.name = name;    this.age = age;  }   public String getName() {    return name;  }   public void setName(String name) {    this.name = name;  }   public Integer getAge() {    return age;  }   public void setAge(Integer age) {    this.age = age;  }   @Override  public String toString() {    return "User{" +        "name='" + name + '\'' +        ", age=" + age +        '}';  }}

package com.reflection; /** * Created by Liuxd on 2018-08-15. */public class TestReflection {   public static void main(String[] args) {//   第一、通过Class.forName方式    Class clazz1 = null;    try {      clazz1 = Class.forName("com.reflection.User");    } catch (ClassNotFoundException e) {      e.printStackTrace();    } //   第二、通过对象实例方法获取对象    Class clazz2 = User.class; //   第三、通过Object类的getClass方法    User user = new User();    Class clazz3 = user.getClass();     System.out.println(clazz1);    System.out.println(clazz2);    System.out.println(clazz3);  }}

2、获取对象实例

共两种方法:

一、直接用字节码文件获取对应实例

// 调用无参构造器 ,若是没有,则会报异常Object o = clazz.newInstance();

二、有带参数的构造函数的类,先获取到其构造对象,再通过该构造方法类获取实例:

//获取构造函数类的对象Constroctor constroctor = clazz.getConstructor(String.class,Integer.class); // 使用构造器对象的newInstance方法初始化对象Object obj = constroctor.newInstance("龙哥", 29);

package com.reflection;import java.lang.reflect.Constructor;/** * Created by Liuxd on 2018-08-15. */public class TestReflection {   public static void main(String[] args) {//   第一、通过Class.forName方式    Class clazz1 = null;    try {      clazz1 = Class.forName("com.reflection.User");    } catch (ClassNotFoundException e) {      e.printStackTrace();    } //   第二、通过对象实例方法获取对象    Class clazz2 = User.class; //   第三、通过Object类的getClass方法    User user = new User();    Class clazz3 = user.getClass();    System.out.println(clazz1);    System.out.println(clazz2);    System.out.println(clazz3);    User user1 = null;    try {       user1 =(User) clazz1.newInstance();    } catch (InstantiationException e) {      e.printStackTrace();    } catch (IllegalAccessException e) {      e.printStackTrace();    }    user1.setName("终结者");    user1.setAge(1500);    System.out.println("user1:"+user1.toString());    User user2 = null;    try {      // 获取构造函数      Constructor constroctor = clazz2.getConstructor(String.class,Integer.class);      // 通过构造器对象的newInstance方法进行对象的初始化      user2 = (User) constroctor.newInstance("龙哥",29);    } catch (Exception e) {      e.printStackTrace();    }    System.out.println("user2:"+user2.toString());  }}

关于Java中怎么利用反射获取class对象就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享名称:Java中怎么利用反射获取class对象
网页链接:http://cdweb.net/article/jecdeh.html