黑马程序员技术交流社区

标题: 内部类中的方法调用 [打印本页]

作者: 请叫我马里奥    时间: 2013-9-28 12:17
标题: 内部类中的方法调用
本帖最后由 请叫我马里奥 于 2013-9-30 15:06 编辑

class Test
{
     static void function()
     {
            class Inner
           {
                    public void method()
                   {
                       System.out.println("hahah");
                   }
           }
    }
}
public class demo1 {
         public static void main(String[] args)
         {

       }
}
能不能再main方法中调用内部类Inner中的method方法,如果可以怎么调用?

作者: HM马强    时间: 2013-9-28 12:27
内部类只能在当前类中调用,不可能跨过当前类直接调用内部类!

调用内部类的方法是当前类在构造器将内部类实例出来,然后外部类通过实例当前类调用了此内部类的构造器或方法
作者: 张慧    时间: 2013-9-28 13:57
可以啊,用反射。
  1. public static void main(String[] args) throws Exception{
  2.                  Test t = new Test();
  3.                  Class c =  t.getClass().getClassLoader().loadClass("Test$$1Inner");
  4.                  
  5.                  Method m = c.getMethod("method", null);
  6.                  m.invoke(c.newInstance(), null);
  7.          }
复制代码
Test$1Inner:这个是生成内部类字节码对象的名称,用类加载器去加载这个类,之后再用到反射的原理 就可以了。不过内部类一般都是在在外部类中new个对象的,或是你的方法中实例化。像你这么写的很少啊。
作者: 请叫我马里奥    时间: 2013-9-28 19:33
张慧 发表于 2013-9-28 13:57
可以啊,用反射。Test$1Inner:这个是生成内部类字节码对象的名称,用类加载器去加载这个类,之后再用到反射 ...

用反射啊,我还没学到呢..都看不懂。不过还是要谢谢你了
作者: 请叫我马里奥    时间: 2013-9-28 19:34
HM马强 发表于 2013-9-28 12:27
内部类只能在当前类中调用,不可能跨过当前类直接调用内部类!

调用内部类的方法是当前类在构造器将内部类 ...

我大概明白了内部类该杂用了,谢谢你哦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2