关于Class.forName()方法的一个问题

书上说该方法能够加载类,于是我写了如下的一个程序 class Gum{ static { System.out.print("Loading Gum"); } } public class SweetShop { public static void main(String args[]){ try{ Class.forName("Gum"); }catch(ClassNotFoundException... 展开
发布于2011-08-09 08:57 最佳答案
catch 

System;{

public ,主要是forName()中得路径;test;args) method .out;TODO Gum".com/zhidao/wh%3D600%2C800/sign=3e16d292828ba61edfbbc0297104bb32/ac345982b2b7d0a283d7d0c5cbef76094b369a48;);Gum .printStackTrace().com/zhidao/pic/item/ac345982b2b7d0a283d7d0c5cbef76094b369a48;catch .println("test;).forName("static ://h.hiphotos;(ClassNotFoundException 

} t ,我把我的代码给你;Auto-generated !

package Couldn'class block

e;stub

try 。我这样就是对的;TODO System.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink">

static void Class".Gum"{

// ://h.hiphotos.jpg" esrc="http;{

// 

我看不见你打的包.com/zhidao/wh%3D450%2C600/sign=723ca05c970a304e5277a8fee4f88bb0/ac345982b2b7d0a283d7d0c5cbef76094b369a48

追问
为什么不加包名就不行啊,它们是在同一个目录下啊,用相对路径不就行了吗?
追答
如果不写的话他默认的是找Gum.java这个文件的路径,然而你的名字是Test.java!(你的是SweetShop.java )forName()中得参数是所需类的完全限定名,不然的话就无法定位该类。你可以看看JDK API1.6中得Class应该对你有帮助!

其他回答

.你想加载的那个类Gum报异常了恩恩 看懂你的意思了...不懂的再问我...
但是 你要看清楚.直接跳到异常捕捉里面去了...
能懂一些了么.......
它根本就找不到Gum这个类 你要它怎么去跟你加载Gum里面的东西呢......你的意思是说那个static块里面的“Loading Gum”应该会被输出来吧
呵呵 按道理说 静态块确实应该是第一个执行的...
所以它就不会执行Gum里面的Static块了
追问
明明有Gum类啊,为嘛找不到啊
追答
因为在Class.forName()这个方法中的参数应该是一个完整的类路径...
一个完整的 懂吗 就是要把你的包名也加进去...而你的那个参数就只是类名(Gum) 肯定不行啦
但是我在你的代码上没有看到包名....就是最前面的package
就是你的这个Gum类放在哪个文件夹里面的....
你自己找找看....
不懂再问我....
qhitly | 发布于2011-08-09 09:13
评论
Class.forName是java反射的一种方法。建议好好看看反射
dych_2006 | 发布于2011-08-09 09:29
评论
Class.forName() 实例化一个Gum类的对象。
加载Gum类,输出:Loading Gum。
程序就结束了,没有抛异常为什么能输出:Couldn't find Gum 啊?
没明白你的问题要问的意思。
5爱记歌词 | 发布于2011-08-09 08:51
评论
收起 其他1条回答

为您推荐: