设为首页 加入收藏

TOP

Java下Class.forName的作用及使用原因
2014-11-23 17:43:00 】 浏览:3771
Tags:Java Class.forName 作用 使用 原因

  (java工厂设计模式)


  Class.forName(xxx.xx.xx) 返回的是一个类


  首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。


  至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。


  A a = (A)Class.forName("pacage.A").newInstance();


  这和你


  A a = new A();


  是一样的效果。


  关于补充的问题


  答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。


  Class.forName(xxx.xx.xx) 返回的是一个类


  Class.forName(xxx.xx.xx);的作用是要求 JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段


  动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象


  String str = 用户输入的字符串


  Class t = Class.forName(str);


  t.newInstance();


  在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JAVA小程序的内存分析 下一篇在Action之间传参数的问题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目