多语言展示
当前在线:1425今日阅读:26今日分享:39

JAVA中Class类对象的三种实例化模式

JAVA中class类对象的三种实例化模式
工具/原料
1

java

2

eclipse

方法/步骤
1

Class类是描述整个类的概念,所以也是整个反射的操作源头,那么在使用Class类的时候需要关注的依然是这个类的对象,而这个类的对象的产生模式一共有三种。任何的实例化对象可以通过Object类中的getClass()方法取得Class类对象:package com.gwolf;import java.util.Date;public class TestDemo {        public static void main(String[] args) {                Class cls = new Date().getClass();                System.out.println(cls.getName());        }}

2

第二种实例化对象是,'类.class':直接根据某一个具体的类来取得Class类的实例化对象:package com.gwolf;import java.util.Date;public class TestDemo {        public static void main(String[] args) {                Class cls = Date.class; //不需要实例化Date类对象了。                System.out.println(cls.getName());        }}

3

第三种实例化的方式:使用Class类提供的方法,Class.forName(String className)。package com.gwolf;public class TestDemo {        public static void main(String[] args) throws Exception {                Class cls = Class.forName('java.util.Date');                System.out.println(cls.getName());        }}

4

在以上给出的三个方法里面我们会返现一个神奇的地方:除了第一种形式会产生Date类的实例化对象之外,其他的两种都不会产生Date类的实例化对象。于是取得了Class类对象有一个最直接的好处:可以直接通过反射实例化对象,在Class类里面定义有如下一个方法: public T newInstance()        throws InstantiationException, IllegalAccessException

5

利用反射实例化对象:package com.gwolf;public class TestDemo {        public static void main(String[] args) throws Exception {                Class cls = Class.forName('java.util.Date');                                Object obj = cls.newInstance(); //实例化对象,等价:new Date()                                System.out.println(obj);        }}

6

那么现在发现除了关键字new之外,对于对象的实例化模式有了第二种做法,通过反射进行。

推荐信息