请问java下Class.forName的作用是什么,为什么要使用它
JVM会自动执行该类的静态代码吗,好像不会吧Class.forName(xxx.xx.xx)返回的是一个类这个我赞同。但是我不认为会执行它的静态代码。...
JVM会自动执行该类的静态代码吗,好像不会吧
Class.forName(xxx.xx.xx) 返回的是一个类 这个我赞同。
但是我不认为会执行它的静态代码。 展开
Class.forName(xxx.xx.xx) 返回的是一个类 这个我赞同。
但是我不认为会执行它的静态代码。 展开
3个回答
展开全部
首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。
至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。
A a = (A)Class.forName("pacage.A").newInstance();
这和你
A a = new A();
是一样的效果。
关于补充的问题
答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。
你可以编个小程序看看就知道了。。。
至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。
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.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象
String str = 用户输入的字符串
Class t = Class.forName(str);
t.newInstance();
String str = 用户输入的字符串
Class t = Class.forName(str);
t.newInstance();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询