Class.forName(String name)方法到底如何使用????

Longerandlonger 2011-03-03 06:34:17
Class yourClass = Class.forName("java.lang.String");

或者
Class yourClass = Class.forName("String");


都会报错:ClassNotFoundException
...全文
425 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
canshui 2011-03-06
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 bao110908 的回复:]
Class.forName("java.lang.String");

表示加载一个类。

这样用的话有个小技巧,可以判断某个类是否在 classpath 下,如果抛出没有找到类的异常,那说明没这个类。
[/Quote]
受教了……
  • 打赏
  • 举报
回复
Class.forName("java.lang.String");

表示加载一个类。

这样用的话有个小技巧,可以判断某个类是否在 classpath 下,如果抛出没有找到类的异常,那说明没这个类。
王二北 2011-03-05
  • 打赏
  • 举报
回复
java api中写的是:public static Class<?> forName(String className)
throws ClassNotFoundException

必须要抛出异常,所以要么用try catch,要么就是在方法签名中写throws ClassNotFoundException

Class yourClass = Class.forName("String"); 这句话错误,forName()中指定的类要指出该类的具体位置,既带包的名称:java.lang.String。
Jeelon 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 victor_woo 的回复:]

Class yourClass = Class.forName("java.lang.String");
如果你这样获取一个String类的class对象,是毫无意义的

Class.forName的用处是在运行过程中才能决定使用哪个类来创建实例。

你的问题的原因是:必须使用带package的完整类名
[/Quote]
支持。
Mybeautiful 2011-03-04
  • 打赏
  • 举报
回复
楼主,吓我一跳,
Class yourClass = Class.forName("java.lang.String"); 工作的很好啊。

Class yourClass = Class.forName("String"); 肯定是不行的,原因楼上诸位已说。
Gray_Sky 2011-03-04
  • 打赏
  • 举报
回复
Class.forName(String)是获取某种类型的一个Class引用,每个类型都有自己对应的一个Class对象,记录了一些关于该类的信息。jvm实例化一个类时要先看Class对象是否已经加载。lz这里只要抓下异常就ok了
preylikehawk 2011-03-04
  • 打赏
  • 举报
回复
同意十楼的。。。
victor_woo 2011-03-04
  • 打赏
  • 举报
回复
Class yourClass = Class.forName("java.lang.String");
如果你这样获取一个String类的class对象,是毫无意义的

Class.forName的用处是在运行过程中才能决定使用哪个类来创建实例。

你的问题的原因是:必须使用带package的完整类名
woshimike 2011-03-04
  • 打赏
  • 举报
回复
偶的可以...
py330316117 2011-03-04
  • 打赏
  • 举报
回复
有异常抛出(可以查api文档)的要放在try catch里面。
kala197 2011-03-04
  • 打赏
  • 举报
回复
学学 哈哈 了解颇多
DryKillLogic 2011-03-04
  • 打赏
  • 举报
回复
java.lang.String是没问题的啊,是不是你不小心包名什么的写错了
canshui 2011-03-03
  • 打赏
  • 举报
回复
Class yourClass = Class.forName("String");
是不合适的
Class.forName(“完整的类名”)
canshui 2011-03-03
  • 打赏
  • 举报
回复
		try {
Class yourClass = Class.forName("java.lang.String");
} catch(Exception e) {
e.printStackTrace();
}
24K純帥 2011-03-03
  • 打赏
  • 举报
回复
额,我的可以啊,不过要放在try..catch里面
wang2453 2011-03-03
  • 打赏
  • 举报
回复
参考javadoc类java.lang.Class

public static Class<?> forName(String className)
throws ClassNotFoundException返回与带有给定字符串名的类或接口相关联的 Class 对象。调用此方法等效于:
Class.forName(className, true, currentLoader)
其中 currentLoader 表示当前类的定义类加载器。
例如,以下代码片段返回命名为 java.lang.Thread 的类的运行时 Class 描述符。

Class t = Class.forName("java.lang.Thread")
调用 forName("X") 将导致命名为 X 的类被初始化。


参数:
className - 所需类的完全限定名。
返回:
具有指定名的类的 Class 对象。
抛出:
LinkageError - 如果链接失败
ExceptionInInitializerError - 如果此方法所激发的初始化失败
ClassNotFoundException - 如果无法定位该类
轩辕敬城 2011-03-03
  • 打赏
  • 举报
回复
不是很明白啊
Ganymede 2011-03-03
  • 打赏
  • 举报
回复
恩。或者抛异常
public static void main(String[] args) throws ClassNotFoundException
{
Class c = Class.forName("java.lang.String");
}
H602miss 2011-03-03
  • 打赏
  • 举报
回复
捕获异常在抛异常
ilrxx 2011-03-03
  • 打赏
  • 举报
回复
Object c =(Object) Class.forName("java.lang.String").newInstance();

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧