当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·关于关联文件的问题    »显示摘要«
    摘要: 各位高手,最近我的机子上的 chm文件打不开了.说是没有相关的关联文件, 那么,这个chm是用什么文件打开的啊?还有我的问题怎么解决啊? 小弟这里先谢过了. ......
 ·倒分    »显示摘要«
    摘要: 倒分 ......


关于“嵌套interface”的疑问,java 菜鸟,望大侠赐教

一本java书上有如下示例:  
  class   A  
  {  
          private   interface   D  
          {  
                  void   f();  
          }  
          private   class   DImp2   implements   D  
          {  
                  public   void   f(){}  
          }  
          public   D   getD(){return   new   DImp2();}  
          private   D   dRef;  
          public   void   receiveD(D   d)  
          {  
                  dRef   =   d;    
                  dRef.f();  
          }  
  }  
   
  public   class   NestingInterface  
  {  
          public   static   void   main()  
          {  
                  A   a   =   new   A();  
                  //A.DImp2   di2   =   a.getD();  
                  //a.getD().f();  
                  //....  
          }  
  }  
   
  上面被注释掉的2行有错,请问为什么错,请大侠们帮忙分析分析,将答案告诉小弟!

NO.1   作者: flashspy

a.getD()方法返回D的引用(D的事例在class   A的堆栈中创建),所以在NestingInterface中无法访问.如楼主说的,把两个private改为public   就行了  
 

NO.2   作者: ewingchen

把前两个private改为public即可

NO.3   作者: huhaowen1978

好象不是改两个public那么简单的事情

NO.4   作者: artisanhe

直接把注释掉的代码打开,编译之后看错误信息就懂了。  
 

NO.5   作者: shine333

我上面举的例子,意思是告诉你,需要将Dimp2定义为static的inner   class,  
  A.DImp2   di2   =   a.getD();错误你可以这样理解,  
  先假设DImp2不是一个class   name,而是一个字段,比如  
  class   A{     int   DImp2;}  
  如果,DImp2不是static的,那么通过A.Dimp2是不可以访问的,需要将Dimp2定义为static才能以A.Dimp2的形式访问,  
  同理,现在的内部类必须是static才能以A.DImp2的形式作为一个class   name


 ·过过倒分瘾    »显示摘要«
    摘要: rt ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE