`
你是救世主
  • 浏览: 123731 次
  • 性别: 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的意思上

相关推荐

    Java解决No enclosing instance of type PrintListFromTailToHead is accessible问题的两种方案

    Java编程语言中的"No enclosing instance of type"错误通常发生在尝试创建非静态内部类的实例,但没有一个外部类的实例可以访问时。在上述示例中,`ListNode`是`PrintListFromTailToHead`类的非静态内部类。由于`...

    java编译中存在的问题及原因分析

    在Java中,当你尝试在静态上下文中创建非静态内部类的对象时,会遇到以下错误信息:“No enclosing instance of type EmployeeTest is accessible. Must qualify the allocation with an enclosing instance of type...

    Eclipse Template与模式

    private static final ${enclosing_type} m_instance = new ${enclosing_type}(); /** * 私有的默认构造子 */ private ${enclosing_type}() {} /** * 静态工厂方法 */ public static ${enclosing_type}...

    java-嵌套类(inner class)-来自oracle官网

    这个包含嵌套类的外部类被称为封装类(Enclosing Class),有时也称为外部类(Outer Class)。嵌套类可以是封装类的直接成员,也可以是封装类的方法成员中的成员。作为外部类的成员,嵌套类可以具有访问修饰符`...

    Secrets of the JavaScript Ninja, 2nd Edition

    They inherit the `this` value from the enclosing context, eliminating common issues related to the `this` keyword in traditional function expressions. For example: ```javascript const values = [0, 3...

    Shell Script

    For instance, if you want to print today's date in a sentence, you would use `$ echo "Today is `date`"`. Here, `date` inside backticks is executed first to get the current date, which is then printed...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    Table of Contents Header Files The #define Guard Header File Dependencies Inline Functions The -inl.h Files Function Parameter Ordering Names and Order of Includes Scoping Namespaces Nested Classes ...

    Borland Delphi 2005 Architect Update 3

    F2084 Internal Error SCR765.00 of 5 Closed11193 Inlined function affects working of the enclosing for loop0.00 of 5 Closed11184 [Fatal Error] F2084 Internal Error: ILLK26340.00 of 5 Closed11069 ...

    Mask 98 for PRwin98

    instance of Mask will be interpreted as a command to unload it, or - In Windows 3.1, if a program item for Mask for Windows - PRWin98 has been set up in the StartUp group in Program Manager, double...

    2009 达内Unix学习笔记

    集合了 所有的 Unix命令大全 ...telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss ... 各个 shell 可互相切换 ksh:$ sh:$ csh:guangzhou% bash:bash-3.00$ ... 命令和参数之间必需用空格隔...

Global site tag (gtag.js) - Google Analytics