反射能反射内部类吗 最好举个例子   
第2个问题  若有个静态内部类 在CLASS.FORNAME后  这个类被载入到内存了吗  载入进去的有哪些信息 以及怎么调用里面的方法

解决方案 »

  1.   

    可以,不过需要反射的类和方法都是public的才行.
    静态内部类在反射外部类的时候不会被加载.测试的代码:public class Test 
    {
      public class B 
      {
        public void print() 
        {
          System.out.println("Test.B.print()");
        }
      }  public void a()
      {
        System.out.println("Test.a()");
      }

      public static class C
      {
        public static final long testLong = 5/(System.currentTimeMillis()-System.currentTimeMillis());
      }

      @SuppressWarnings("unchecked")
      public static void main(String[] args) 
      {
        try 
        {
          Class c = Class.forName("com.gnet.mis.dao.test.Test");
          Object o1 = c.newInstance();
          Test t = (Test)o1;
          t.a();
          Class[] cs = c.getClasses();
          Constructor co = cs[0].getConstructor(new Class[]{c});
          Object testO = co.newInstance(o1);
          Method m = cs[0].getMethod("print", new Class[]{});
          m.invoke(testO, new Object[]{});
        } 
        catch (Exception e) 
        {
          e.printStackTrace();
        }
      }
    }如果加载静态内部类C,就会报除数为0异常,没有报异常代表没有加载.
    内部类B可以被反射出实例,但是条件必须是public才行.
    如果要调用testB的方法,那么那个方法也必须是public的说.
      

  2.   

    哎呀,哎呀,刚才头好晕啊.

    public static final long testLong = 5/(System.currentTimeMillis()-System.currentTimeMillis());
    改做
    public static final long testLong = 5/0;
    更直接些的说.
      

  3.   

    答:
    1)例子:class A{ 
    int i=0; 
    void f(){ 
    System.out.println("A.f()"); 

    class B{ //内部类} static class C{//stati 内部类

    }
     void g()
     {
     class D{//局部内部类
     
     }
     }

    public class Nei { 
    public static void main(String[] args){  System.out.println("类A中的内部类有:");
     Class c=A.class;
     Class[] cc=c.getDeclaredClasses();
     
     for(Class e:cc)
     {
     System.out.println(" "+e);
     }
      

    }程序运行结果:
    类A中的内部类有:
     class A$B
     class A$C2) "若有个静态内部类 在CLASS.FORNAME后  这个类被载入到内存了吗  载入进去的有哪些信息 以及怎么调用里面的方法"?
    static型内部类,除了是在一个类的内部定义外,其实它就是一个顶层类.载入进去的就是类中的信息,就同顶层类一样调用里面的方法.
      

  4.   

    package cc;
    public class xx {
    public class A{
      
    }
       public static class b{
          static final int a=5/0;
         }
         void pp(){}
    public static void main(String[] args) throws Exception{
         Class m=Class.forName("cc.xx");
         Class[] mm=m.getDeclaredClasses();
         for(int i=0;i<mm.length;i++)
         System.out.println("   "+mm);
    }
    }我的运行结果如下
    [Ljava.lang.Class;@1fb8ee3
    [Ljava.lang.Class;@1fb8ee3  
    ? 怎么都一样 
      

  5.   

    [Ljava.lang.Class;@1fb8ee3 
    [Ljava.lang.Class;@1fb8ee3  
    这到底输出的什么东东啊