为了账号安全,请及时绑定邮箱和手机立即绑定

java Class.forname("Classname")?

java Class.forname("Classname")?

慕森王 2019-05-28 10:06:41
java Class.forname("Classname")
查看完整描述

4 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

这个属于java反射机制,通过类名创建类对象,应该给定全路径包名的
Class.forName("Cake");得到Cake类的类对象
forname()方法属于Class类的一个静态方法

查看完整回答
反对 回复 2019-06-01
?
慕后森

TA贡献1802条经验 获得超5个赞

是的 必须给定全路径,要想省略前面的包名可以这样写:

package test;

public class Test {

public static void main(String[] args) {
Test instance = null;
try {
instance = (Test) Class.forName("test." + args[0]).newInstance(); // 直接在前面先加上包名
// ........
} catch (Exception e) {
e.printStackTrace();
}
}

}



查看完整回答
反对 回复 2019-06-01
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

Class.forName:返回与给定的字符串名称相关联类或接口的Class对象。

Class.forName是一个静态方法,同样可以用来加载类。该方法有两种形式:Class.forName(String name, boolean initialize, ClassLoader loader)和 Class.forName(String className)。第一种形式的参数 name表示的是类的全名;initialize表示是否初始化类;loader表示加载时使用的类加载器。第二种形式则相当于设置了参数 initialize的值为 true,loader的值为当前类的类加载器。

如下图所示,java类型的属性名称叫name,可以通过forName的方法获取到这个类的实例,从而获取到类里面的属性。

扩展资料:

注意:

在指定类给 class.forName() 方法后,如果找不到指定的类,会抛出ClassNotFoundException 异常。Class 的静态 forName() 方法有两个版本,上面的代码是只指定类名称的版本,而另一个版本可以让你指定类名称、加载时是否运行静态区块、指定类加载器:

Static Class forName(String name, boolean initialize, ClassLoader loader)

默认在加载类的时候,如果类中有定义静态区块则会运行它。你可以使用 class.forName() 的第二个版本,将 initialize 设定为 false,这样在加载类时并不会立即运行静态区块,而会在使用类建立对象时才运行静态区块。为了印证,可以先设计一个测试类:

package cn.sunzn.demo;public class TestClass {    static {System.out.println("[运行静态区块]");}}



查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 1828 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信