当前位置: 首页 > 知识库问答 >
问题:

Java中的内部类-非静态变量错误

宰父淳
2023-03-14

我还是Java新手,我试图创建一个内部类并在main中调用该方法。有一个编译错误说

非静态变量 - 这不能从静态上下文中引用

请帮忙

class Class1{

    public static void main(String args []){
        Class2 myObject = new Class2();
        myObject.newMethod();
    }

    public class Class2{
        public void newMethod(){
            System.out.println("Second class");
        }
    }
}

共有3个答案

唐默
2023-03-14

访问内部类就像访问类的任何其他普通方法一样。

因此,就像您需要引用类的实例来访问其方法一样,同样,您需要对外部类的实例的引用来实例化内部类: -

Class1.Class2 myObject = new Class1().new Class2();

或者,另一种方法是,您可以将内部类设为静态,在这种情况下,它被称为嵌套类,然后您可以使用原始方式: -

public static class Class2{
    public void newMethod(){
        System.out.println("Second class");
    }
}
曹昊焱
2023-03-14

通过添加静态关键字like使内部类成为静态的

public static class  Class2

那应该能行。在一个非静态的环境中,你不能问任何静态的事情。或者,您可以通过创建object来访问它,而不用将class2设置为静态的。

韩朝斑
2023-03-14

内部类需要对外部类的实例的引用才能构造。如果你的类在逻辑上不需要它,那么使用静态modifer使它“只是一个嵌套类”:

public static class Class2 {
    public void newMethod(){
        System.out.println("Second class");
    }
}

编辑:要将Class2的实例创建为内部类,您可以使用以下内容:

Class1 outer = new Class1();
Class2 myObject = outer.new Class2();

或者更简单地说:

Class2 myObject = new Class1().new Class2();

…但是除非您真的想要对封闭实例的引用,否则将类变成嵌套类要简单得多。

 类似资料:
  • 问题内容: 我对Java还是陌生的,我尝试创建一个内部类并在main内部调用该方法。但是出现编译错误,提示“非静态变量-不能从静态上下文中引用” 请帮忙 问题答案: 一个 内部 类需要的的一个实例的引用 外 类以构造。如果您的类在逻辑上不需要它,请使用修饰符将其设置为“仅嵌套类”: 编辑:要创建一个作为 内部 类的实例,您可以使用类似以下内容的方法: 或更简短地说: …但是除非您真的 想要 引用封

  • 问题内容: 我已经定义了一个对象并声明了一个静态变量。在该方法中,当我尝试打印实例和类变量时,两者都打印相同的值。 不是实例变量吗?它应该打印0而不是50吗? 问题答案: 不,只有一个变量-您尚未声明任何实例变量。 不幸的是,Java允许您访问静态成员,就像通过相关类型的引用访问静态成员一样。这是IMO的设计缺陷,某些IDE(例如Eclipse)允许您将其标记为警告或错误- 但这是语言的一部分。您

  • 我有以下代码: 当我尝试编译它时,会出现以下错误: 因此,我尝试使dbConnect静态如下:

  • 我写了一个简单的类和3个测试如下: 个人测试。爪哇: 测试numberOfPersons失败,消息为:java。lang.AssertionError:预期:

  • 静态内部类是指使用 static 修饰的内部类。示例代码如下: 上述示例中的 Inner 类就是静态内部类。静态内部类有如下特点。 1) 在创建静态内部类的实例时,不需要创建外部类的实例。 2) 静态内部类中可以定义静态成员和实例成员。外部类以外的其他类需要通过完整的类名访问静态内部类中的静态成员,如果要访问静态内部类中的实例成员,则需要通过静态内部类的实例。 3) 静态内部类可以直接访问外部类的

  • 本文向大家介绍深入浅析Java中Static Class及静态内部类和非静态内部类的不同,包括了深入浅析Java中Static Class及静态内部类和非静态内部类的不同的使用技巧和注意事项,需要的朋友参考一下 java中的类可以是static吗?答案是可以。在java中我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。 java允许我们在一个类里面定义静态类。比如内部类(nested