zoukankan      html  css  js  c++  java
  • No enclosing instance of type Hello is accessible

    1.static 关键字

    • 修饰的成员被所有对象共享(包括成员变量和方法)。
    • 修饰的成员优先于对象存在。
    • 存储于方法区(共享数据区)的静态区中。
    • 静态方法只能访问静态成员。
    • 静态方法中不可以使用this或super关键字。
    • 主函数是static,只能调用static方法。
    • 静态代码块随着类的加载而运行(只执行一次)。用于给类进行初始化。

    Q:

    I have the following code:

       1: class Hello {
       2:     class Thing {
       3:         public int size;
       4:  
       5:         Thing() {
       6:             size = 0;
       7:         }
       8:     }
       9:  
      10:     public static void main(String[] args) {
      11:         Thing thing1 = new Thing();
      12:         System.out.println("Hello, World!");
      13:     }
      14: }

    it refuses to compile. I get No enclosing instance of type Hello is accessible." at the line that creates a new Thing.

    A

    You've declared the class Thing as a non-static inner class. That means it must be associated with an instance of the Hello class.

    In your code, you're trying to create an instance of Thing from a static context. That is what the compiler is complaining about.

    There are a few possible solutions. Which solution to use depends on what you want to achieve.

    • Change Thing to be a static nested class.

         1: static class Thing
    • Create an instance of Hello, then create an instance of Thing.

         1: public static void main(String[] args)
         2: {
         3:     Hello h = new Hello();
         4:     Thing thing1 = h.new Thing(); // hope this syntax is right, typing on the fly :P
         5: }
    • Move Thing out of the Hello class.

  • 相关阅读:
    IOS:兼容ios6和低版本
    iOS开发~sizeClass和autolayout
    iOS开发~即时通讯工具参考的一些开源框架和教程
    移动开发网站导航
    mac工具总结
    推送总结(重要)
    IOS常用学习网站和博客
    iOS~静态库开发
    iOS~视频开发
    iOS~视频编码转换
  • 原文地址:https://www.cnblogs.com/hust-ghtao/p/4644104.html
Copyright © 2011-2022 走看看