getMethods()和getFields()class A {}Method methods[] = A.class.getMethods();可以得到方法 同理A.class.getFields()可以得到属性。
很简单,去看THINK IN JAVA,里面有反射机制的详细介绍与例程.而那个例子也是你需要的例子。
多谢各位的热心帮助! import java.lang.reflect.*; import java.lang.*; public class Test{ Hello hello; public Test(){ hello=new Hello(); } public void say(){ try{ Class cl=Class.forName("hello"); Method[] meth= cl.getMethods(); for(int i=0;i<meth.length;i++) System.out.println(meth[i]);
}catch(ClassNotFoundException fe){ fe.printStackTrace(); } } } 但是在执行Class cl=Class.forName("hello");这句话时,就抛异常了。 java.lang.ClassNotFoundException: hello at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:297) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286) at java.lang.ClassLoader.loadClass(ClassLoader.java:253) 但Hello已编译过了呀。 不知道是怎么回事。
确定一下你的classoath以保证你的程序能找到hello.class
我已经将Class cl=Class.forName("hello");改成 Class cl=Class.forName("selectmethod.hello"); selecmethod为hello所在包名,同时Test也在selectmethod包中。 可是执行 Class cl=Class.forName("selectmethod.hello"); 时,还出错 java.lang.NoClassDefFoundError: selectmethod/hello (wrong name: selectmethod/Hello)不知道是怎么回事? 请赐教!
应将Class cl=Class.forName("selectmethod.hello");改为 Class cl=Class.forName("selectmethod.Hello"); Hello是类名,hello是实例名。 谢谢各位!
同理A.class.getFields()可以得到属性。
import java.lang.reflect.*;
import java.lang.*;
public class Test{
Hello hello;
public Test(){
hello=new Hello();
}
public void say(){
try{
Class cl=Class.forName("hello");
Method[] meth= cl.getMethods();
for(int i=0;i<meth.length;i++)
System.out.println(meth[i]);
}catch(ClassNotFoundException fe){
fe.printStackTrace();
}
}
}
但是在执行Class cl=Class.forName("hello");这句话时,就抛异常了。
java.lang.ClassNotFoundException: hello
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
但Hello已编译过了呀。
不知道是怎么回事。
Class cl=Class.forName("selectmethod.hello");
selecmethod为hello所在包名,同时Test也在selectmethod包中。
可是执行
Class cl=Class.forName("selectmethod.hello");
时,还出错
java.lang.NoClassDefFoundError: selectmethod/hello (wrong name: selectmethod/Hello)不知道是怎么回事?
请赐教!
Class cl=Class.forName("selectmethod.Hello");
Hello是类名,hello是实例名。
谢谢各位!