java Class.forname("Classname"); 5

为什么我在我的编译器里面直接写try{Class.forName("Cake");//这里就出错了,一运行就抛出异常啊。但是如果我把包名什么的都加进去就可运//行。可是j... 为什么我在我的编译器里面直接写
try{
Class.forName("Cake");
//这里就出错了,一运行就抛出异常啊。但是如果我把包名什么的都加进去就可运
//行。 可是java编程思想里面这里就直接写的类名啊。 我真心纠结了。而且无论我
//把这个类放在另一个文件中还是就在main方面这个类中,都会抛出异常。难不成是
//编译器问题么?。
//对了, 求大师给我解释下。 这个forname到底是哪来干什么用的。书上看得迷迷糊
//糊的。
}catch(Exception e){

e.printStackTrace();
}
展开
 我来答
邗启3V
推荐于2018-04-05 · TA获得超过7271个赞
知道大有可为答主
回答量:1413
采纳率:100%
帮助的人:1422万
展开全部
这个属于java反射机制,通过类名创建类对象,应该给定全路径包名的
Class.forName("Cake");得到Cake类的类对象
forname()方法属于Class类的一个静态方法
泰然还素净的海鸥H
2012-06-08 · TA获得超过333个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:140万
展开全部
是的 必须给定全路径,要想省略前面的包名可以这样写:

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();
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式