需要抛出异常
import java.lang.reflect.*;class Test
{
    public Test() { System.out.println("call construction"); }
    public Test(int value) {m_age = value; }
    public void p() { System.out.println("call function"); }
    private int m_age;
}
 
public class Test07 
{
    public static void main(String[] args)
    {
        //Test t = new Test();
         
        //Class c = t.getClass();
        //System.out.println(c);
         
        //Class c = Test.class;
         
         
       Class c;
try {
c = Class.forName("Test");
Constructor[] cons = c.getConstructors();
        Method[]   methods = c.getMethods();
        Field[]    fields  = c.getDeclaredFields();
         
        for (int i=0; i< cons.length; ++i)
            System.out.println(cons[i]);
        for (int i=0; i< methods.length; ++i)
            System.out.println(methods[i]);
        for (int i=0; i< fields.length; ++i)
            System.out.println(fields[i]);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    
         
         
    }
}

解决方案 »

  1.   

    有什么错误,如果报java.lang.ClassNotFoundException
    那么很有可能是有包名,比如你的hello是放在com/test/这个包下面
    那么这边你应该这样写
    Class c   = Class.forName("com.test.Test");   
      

  2.   


    嗯,,是报的这个错。。Hello.java这个文件的路径为$CLASSPATH/Hello/src/
      

  3.   


    这样可以正常运行,为啥这种方式需要抛出异常呢?
    api里这个类的定义
    public static Class<?> forName(String className) throws ClassNotFoundException
      

  4.   

    --------------- 
    2楼说的对,ClassNotFound 。找不到 Test,加个包名
      

  5.   


    这样可以正常运行,为啥这种方式需要抛出异常呢?前两种方式编译器可以确定得到Class对象!第三种编译器在编译期间无法确定!有时候你传进去的关于类信息的字符串是错误的!也就是说这个类不存在找不到!所以才有异常!