Class.forName的使用

Class.forName的使用

Class.forName返回一个类,使用此方法可以获取类

首先,创建一个Student类

 1 /***
 2  * This Class is for Student bean
 3  * @author Young
 4  *
 5  */
 6 public class Student {
 7
 8     private int stud_Id;
 9     private String stud_Name;
10     private String sex;
11     private String birthday;
12     private String score;
13
14     public int getStud_Id() {
15         return stud_Id;
16     }
17
18     public void setStud_Id(int stud_Id) {
19         this.stud_Id = stud_Id;
20     }
21
22     public String getStud_Name() {
23         return stud_Name;
24     }
25
26     public void setStud_Name(String stud_Name) {
27         this.stud_Name = stud_Name;
28     }
29
30     public String getSex() {
31         return sex;
32     }
33
34     public void setSex(String sex) {
35         this.sex = sex;
36     }
37
38     public String getBirthday() {
39         return birthday;
40     }
41
42     public void setBirthday(String birthday) {
43         this.birthday = birthday;
44     }
45
46     public String getScore() {
47         return score;
48     }
49
50     public void setScore(String score) {
51         this.score = score;
52     }
53
54     /**
55      * This method is a constructor
56      *
57      * @author Young
58      * @param id
59      * @param name
60      * @param sex
61      * @param birthday
62      * @param score
63      */
64     public Student(int id, String name, String sex, String birthday,
65             String score) {
66
67         this.stud_Id = id;
68         this.stud_Name = name;
69         this.sex = sex;
70         this.birthday = birthday;
71         this.score = score;
72     }
73
74     public Student() {
75
76         this.stud_Id = 1000200;
77         this.stud_Name = "Test";
78         this.sex = "Male";
79         this.birthday = "2015/01/28";
80         this.score ="3.3";
81     }
82 }

然后使用该类

Class<?> c = Class.forName(Student.class.getCanonicalName());
        Object obj=c.newInstance();
        for(Method m:c.getMethods())
        {
            System.out.println(m.getName());
            if(m.getName().equals("getId"))
            {
                System.out.println(m.invoke(obj));
            }

使用invoke运行该类的方法

使用getInstance方法获取一个对象

获取不带参数的对象,如果遇到带参数的对象该怎么获取?

        Class<?> c = Class.forName(Student.class.getCanonicalName());
        Constructor<?> constructor = c.getConstructor(Integer.TYPE,
                String.class, String.class, String.class, String.class);
        Object obj = constructor.newInstance(1, "Test", "Male", "2015-07-09",
                "80");
        for (Method m : c.getMethods()) {
            System.out.println(m.getName());
            if (m.getName().equals("getSex")) {
                System.out.println(m.invoke(obj));
            }
        }

使用Constructor ,可以设置参数

时间: 2024-11-04 19:39:38

Class.forName的使用的相关文章

【转】 Class.forName()用法及与new区别 详解

平时开发中我们经常会发现:用到Class.forName()方法.为什么要用呢? 下面分析一下: 主要功能Class.forName(xxx.xx.xx)返回的是一个类Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段 在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类.

Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别(转)

一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:  其中 i.加载是指将编译后的java类文件(也就是.class文件)中的二进制数据读入内存,并将其放在运行时数据区的方法区内,然后再堆区创建一个Java.lang.Class对象,用来封装类在方法区的数据结构.即加载后最终得到的是Class对象,并且更加值得注意的是:该Java.lang.Class对象是单实例的,无论这个类创建了多少个对象,他的Class对象时唯一的!!!!.

Class.forName()的作用与使用总结

1.Class类简介: Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类.Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建. Class 没有公共构造方法.Class 对象是在加载类时由Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对象. 虚拟

【转】 java中Class对象详解和类名.class, class.forName(), getClass()区别

Class对象的生成方式如下: 1.类名.class           说明: JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象 2.Class.forName("类名字符串")  (注:类名字符串是包名+类名)  说明:装入类,并做类的静态初始化,返回Class的对象 3.实例对象.getClass()  说明:对类进行静态初始化.非静态初始化:返回引用运行时真正所指的对象(因为:子对象的引用可能会赋给父对象的引用变量中)所

class.forname()的作用

Class.forName(xxx.xx.xx) 返回的是一个类对象 首先你要明白在java里面任何class都要装载在虚拟机上才能运行.这句话就是装载类用的(和new 不一样,要分清楚). 至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点. A a = (A)Class.forName("pacage.A").newInstance(); 这和你 A a = new A(): 是一样的效果.

Class.forName() 初始化、Thread.currentThread().getContextClassLoader().getResourceAsStream

Class.forName() 和 ClassLoader.loadClass()的区别? Class.forName() 和 Class.forName().NewInstance()的区别? Class.forName("xx.xx")等同于Class.forName("xx.xx",true,CALLClass.class.getClassLoader()),第二个参数(bool)表示装载类的时候是否初始化该类,即调用类的静态块的语句及初始化静态成员变量. C

Java中Class.forName()用法详解

Class.forName()主要功能 Class.forName(xxx.xx.xx)返回的是一个类, Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段. 下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法. 一.什么时候用Class.forName()? 给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?你第一想到的肯定是new,但是注意一点: A a = (A)Class.for

Class.forName()

主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法.一.什么时候用Class.forName()?先来个热身,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?你第一想到的肯定是new,但是注意一点:A a = (A)Class.forName(“pacage.

【转】Class.forName()用法详解

ref: http://blog.csdn.net/kaiwii/article/details/7405761 主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法. 一.什么时候用Class.forName()?先来个热身,给你一个字符串变量,它代表一个类的包名和类名,你

Class.forName(“com.mysql.jdbc.Driver”)

传统的使用jdbc来访问数据库的流程为: Class.forName(“com.mysql.jdbc.Driver”); String url = “jdbc:mysql://localhost:3306/test?user=root&password=123456″; Connection con = DriverManager.getConnection(url); Statement statement = con.createStatement(); 最开始使用的时候,不明白为什么首先要