`
你是救世主
  • 浏览: 121354 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

enclosing instance

阅读更多
么是封闭实例-呵呵,这个概念我第一次看见是在一本叫做Java高效编程的书上,于是baidu,google都没有找到相关的网页。

后来无意中想起来了我看英文书中的enclosing class,推断这个译本的原文应该是enclosing instance,果不其然,上网一搜发现好多人再问no enclosing instance of class XXX的问题,不禁郁闷了一把,心想学java的兄弟第一次见到汉语的封闭类会不会也像我一样郁闷呢,所以决定写这篇贴备我以后查阅也希望能帮到需要的其他人。重新再次声明:“我的日志并不是想有人想像的那样叫做什么显摆用的,呵呵”!

(1)enclosing class

   Java中把定义在其他类内部的类定义为Inner class,相反包含Inner class的类被叫做该Inner class的enclosing class。

(2)enclosing instance

   有了上面关于enclosing class的定义,很容易就明白enclosing instance就是它的实例(instance)。

(3)no enclosing instance of class XXX

   为了解释这个runtime exception,我首先假设有以下的类定义:

public class Outter {

  public class Inner {

    private int value;

  }

  public void testInnerClass () {

  _______________________________  

    //如何声明一个指向内部类实例的应用变量呢?

  }

}

    其实,只要对实例变量和类变量理解的够深刻,你就应该很轻松的在上面的横线填入以下代码:

    Outter.Inner oi = new Outter.Inner();

    or Inner oi = new Inner();

    or Outter.Inner oi = new Outter().new Inner();

    Jvm对于这三种答案都是认同的,但是你别高兴得太早,想象如果不是在enclosing class中的情形

又如何呢?

    那么只能是最后一个答案,我曾看见有人写过下面的方法:

    Outter.Inner oi = new Outter.Inner();

    这时就会抛出上面的异常信息了,呵呵,其实想想Inner不是static的,怎么可以通过enclosing class

的类名引用呢?
分享到:
评论
2 楼 lenient315 2012-07-26  
no enclosing instance of class XXX 。这句话不是一个runtime exception吧,而是一个error
1 楼 lenient315 2012-07-26  
很感谢,最近也是困惑在enclosing class的意思上

相关推荐

Global site tag (gtag.js) - Google Analytics