• Java编译时出现No enclosing instance of type XXX is accessible.


    今天在编译Java程序的时候出现以下错误:

    No enclosing instance of type Main is accessible. Must qualify the allocation with an enclosing instance of type Main (e.g. x.new A() where x is an instance of Main).

    我原来编写的源代码是这样的:

    public class Main 
    {
    class Dog //定义一个“狗类”
    {
    private String name;
    private int weight;
    public Dog(String name, int weight) 
    {
    this.setName(name);
    this.weight = weight;
    }
    public int getWeight() 
    {
    return weight;
    }
    public void setWeight(int weight) 
    {this.weight = weight;}
    public void setName(String name)
    {this.name = name;}
    public String getName() 
    {return name;}
    }
    public static void main(String[] args)
    {
    Dog d1 = new Dog("dog1",1);

    }
    }

    出现这个错误的时候,我一直不太理解。

    在借鉴别人的解释之后才恍然大悟。

    在代码中,我的Dog类是定义在Main中的内部类。Dog内部类是动态的内部类,而我的main方法是static静态的。

    就好比静态的方法不能调用动态的方法一样。

    有两种解决办法:

    第一种:

    将内部类Dog定义成静态static的类。

    第二种:

    将内部类Dog在Main类外边定义。

    修改后的代码:

    第一种:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public class Main
    {
        public static class Dog
        {
            private String name;
            private int weight;
            public Dog(String name, int weight)
            {
                this.setName(name);
                this.weight = weight;
            }
            public int getWeight()
            {
                return weight;
            }
            public void setWeight(int weight)
            {this.weight = weight;}
            public void setName(String name)
            {this.name = name;}
            public String getName()
            {return name;}
        }
        public static void main(String[] args)
        {
            Dog d1 = new Dog("dog1",1);
        }
    }

    第二种:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public class Main
    {
        public static void main(String[] args)
        {
            Dog d1 = new Dog("dog1",1);
        }
    }
     
    class Dog
    {
            private String name;
            private int weight;
            public Dog(String name, int weight)
            {
                this.setName(name);
                this.weight = weight;
            }
            public int getWeight()
            {
                return weight;
            }
            public void setWeight(int weight)
            {this.weight = weight;}
            public void setName(String name)
            {this.name = name;}
            public String getName()
            {return name;}
    }

     

  • 相关阅读:
    meta标签
    html5新增标签
    jQuery鼠标事件
    Jenkins在Linux环境安装
    3、jQuery的DOM基础
    2、jQuery选择器
    1、jQuery概述
    伪分布模式安装hadoop
    poj 2773欧几里德
    poj 1298(水题)
  • 原文地址:https://www.cnblogs.com/lucky-star-star/p/4418118.html
Copyright © 2020-2023  润新知