资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

java中Class类对象的实例化模式有哪些

这篇文章主要讲解了“java中Class类对象的实例化模式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中Class类对象的实例化模式有哪些”吧!

创新互联专注于浦口企业网站建设,响应式网站设计,购物商城网站建设。浦口网站建设公司,为浦口等地区提供建站服务。全流程按需规划网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

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

反射中所有的核心操作都是通过Class类对象展开的,可以说Class类是反射操作的根源所在,但是这个类如果要想获取它的实例化对象可以采用三种方式来实现,首先来观察java.lang.Class类的定义:

public final class Class extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement

从JDK1.5开始,Class类在定义的时可以使用泛型进行标记,这样的用法主要是希望可以避免所谓的向下转型。下面通过具体的操作讲解三种实例化形式。
1、【Object类支持】Object类可以根据实例化对象获取Class对象。

public final Class getClass()
class Person{}  //采用自定义的程序类public class JavaAPIDemo {public static void main(String[] args) throws Exception {
        Person per = new Person();  //已经存在有指定类的实例化对象Class cls = per.getClass();
        System.out.println(cls.getName());  //获取的是类的完整名称}
}

这种方式有一个不是缺点的缺点:如果只是想获得Class类对象,则必须产生指定类对象后才可以获得。

2、【JVM直接支持】采用“类.class”的形式实例化

class Person{}  //采用自定义的程序类public class JavaAPIDemo {public static void main(String[] args) throws Exception {
        Class cls=Person.class;
        System.out.println(cls.getName());  //cn.mldn.demo.Person}
}

特点:如果想获得Class类对象,就必须导入程序所对应的开发包;

3、【Class类支持】在Class类中提供有一个static方法:

加载类:public static Class forName(String className)throws ClassNotFoundException

package cn.mldn.vo;public class Person {

}
package cn.mldn.demo;public class JavaAPIDemo {public static void main(String[] args) throws Exception {Class cls = Class.forName("cn.mldn.vo.Person");//该类必须存在System.out.println(cls.getName()); //cn.mldn.vo.Person}
}

这种模式最大的特点:可以直接采用字符串的形式定义要使用的类型,并且程序中不需要编写任何的import语句。
如果此时要使用的程序类不存在则会抛出“java.lang.ClassNotFoundException”异常。

感谢各位的阅读,以上就是“java中Class类对象的实例化模式有哪些”的内容了,经过本文的学习后,相信大家对java中Class类对象的实例化模式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章名称:java中Class类对象的实例化模式有哪些
转载源于:http://cdkjz.cn/article/ijisgs.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220