Mailbomb:
可不可以说的再详细点,谢谢!

解决方案 »

  1.   

    getMethods()和getFields()class A {}Method methods[] = A.class.getMethods();可以得到方法
    同理A.class.getFields()可以得到属性。
      

  2.   

    很简单,去看THINK IN JAVA,里面有反射机制的详细介绍与例程.而那个例子也是你需要的例子。
      

  3.   

    多谢各位的热心帮助!
    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已编译过了呀。
    不知道是怎么回事。
      

  4.   

    确定一下你的classoath以保证你的程序能找到hello.class
      

  5.   

    我已经将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)不知道是怎么回事?
    请赐教!
      

  6.   

    应将Class cl=Class.forName("selectmethod.hello");改为
        Class cl=Class.forName("selectmethod.Hello");
    Hello是类名,hello是实例名。
    谢谢各位!