当前位置: 首页 > 面试题库 >

创建对象时,“无法从静态上下文引用的非静态变量”

党权
2023-03-14
问题内容

我编写了以下代码来测试Java中类和对象的概念。

public class ShowBike {
    private class Bicycle {
        public int gear = 0;
        public Bicycle(int v) {
            gear = v;
        }
    }

    public static void main() {
        Bicycle bike = new Bicycle(5);
        System.out.println(bike.gear);
    }
}

为什么在编译过程中出现以下错误?

ShowBike.java:12: non-static variable this cannot be referenced from a static context
        Bicycle bike = new Bicycle(5);
                       ^

问题答案:

使ShowBike.Bicycle静态。

public class ShowBike {

    private static class Bicycle {
        public int gear = 0;
        public Bicycle(int v) {
            gear = v;
        }

    }

    public static void main() {
        Bicycle bike = new Bicycle(5);
        System.out.println(bike.gear);
    }
}

在Java中,有两种类型的嵌套类:“静态嵌套类”和“内部类”。没有static关键字,它是一个内部类,您将需要一个实例ShowBike来访问ShowBike.Bicycle

ShowBike showBike = new ShowBike();
Bicycle bike = showBike.new Bicycle(5);

静态嵌套类和普通(非嵌套)类的功能几乎相同,只是对事物进行分组的方式不同。但是,在使用静态嵌套类时,不能将它们的定义放在单独的文件中,这将导致单个文件包含很多类定义。



 类似资料:
  • 我正在尝试编写一段代码,当我选中两个复选框中的一个复选框时,它将更改我选择按钮时显示的消息。 我收到的错误消息是: "FirstWindow.java:12:错误:不能从静态上下文消息中引用非静态变量消息="good job\n";" 对于第12、37、53、57行。我已尝试在main中声明字符串变量,但我只会收到错误: “FirstWindow。java:38:错误:从内部类引用的局部变量必须是

  • 我在阅读Kathy and Bert SCJP1.6时遇到了以下代码: 虽然是在跟踪变量的主题下,但我无法理解如何在main()方法(static)中引用非静态变量myBar?

  • 我尝试使用网络豆IDE在java中创建一个简单的类。每当我试图执行这个命令时,它都会发出这样的警告。从静态上下文引用的非静态变量“。谁能告诉我为什么会发生这种情况以及如何解决它。提前感恩节。

  • 我是Android编码的n00b,今天我想尝试使用定位服务。 我设置了一个简单的类和一个简单的main,只是为了得到经度和纬度。 但当我尝试调用retrive的构造时,long and latitude Android Studio弹出了一个错误: 错误:(33,16)错误:无法从静态上下文引用非静态变量纬度 这是我的位置班

  • 我编写了以下测试代码: 但会出现以下错误: 我如何让我的方法识别我的类变量?

  • 可能重复: 为什么我得到“非静态变量不能从静态上下文引用”? 这是代码 错误说: 不能从静态上下文引用非静态类节点 为什么我不应该在main()方法中引用Node类?