
java Class.forname("Classname"); 5
为什么我在我的编译器里面直接写try{Class.forName("Cake");//这里就出错了,一运行就抛出异常啊。但是如果我把包名什么的都加进去就可运//行。可是j...
为什么我在我的编译器里面直接写
try{
Class.forName("Cake");
//这里就出错了,一运行就抛出异常啊。但是如果我把包名什么的都加进去就可运
//行。 可是java编程思想里面这里就直接写的类名啊。 我真心纠结了。而且无论我
//把这个类放在另一个文件中还是就在main方面这个类中,都会抛出异常。难不成是
//编译器问题么?。
//对了, 求大师给我解释下。 这个forname到底是哪来干什么用的。书上看得迷迷糊
//糊的。
}catch(Exception e){
e.printStackTrace();
} 展开
try{
Class.forName("Cake");
//这里就出错了,一运行就抛出异常啊。但是如果我把包名什么的都加进去就可运
//行。 可是java编程思想里面这里就直接写的类名啊。 我真心纠结了。而且无论我
//把这个类放在另一个文件中还是就在main方面这个类中,都会抛出异常。难不成是
//编译器问题么?。
//对了, 求大师给我解释下。 这个forname到底是哪来干什么用的。书上看得迷迷糊
//糊的。
}catch(Exception e){
e.printStackTrace();
} 展开
2个回答
展开全部
这个属于java反射机制,通过类名创建类对象,应该给定全路径包名的
Class.forName("Cake");得到Cake类的类对象
forname()方法属于Class类的一个静态方法
Class.forName("Cake");得到Cake类的类对象
forname()方法属于Class类的一个静态方法
展开全部
是的 必须给定全路径,要想省略前面的包名可以这样写:
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();
}
}
}
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();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询