需要抛出异常
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();
}
}
}
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();
}
}
}
那么很有可能是有包名,比如你的hello是放在com/test/这个包下面
那么这边你应该这样写
Class c = Class.forName("com.test.Test");
嗯,,是报的这个错。。Hello.java这个文件的路径为$CLASSPATH/Hello/src/
这样可以正常运行,为啥这种方式需要抛出异常呢?
api里这个类的定义
public static Class<?> forName(String className) throws ClassNotFoundException
2楼说的对,ClassNotFound 。找不到 Test,加个包名
这样可以正常运行,为啥这种方式需要抛出异常呢?前两种方式编译器可以确定得到Class对象!第三种编译器在编译期间无法确定!有时候你传进去的关于类信息的字符串是错误的!也就是说这个类不存在找不到!所以才有异常!