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

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");
        }
    }
}

问题答案:

一个 内部 类需要的的一个实例的引用 类以构造。如果您的类在逻辑上不需要它,请使用static修饰符将其设置为“仅嵌套类”:

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)允许您将其标记为警告或错误- 但这是语言的一部分。您

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

  • 我想知道是否可以制作实现比较器接口的非静态内部类。 例如:。 我想使用比较器类非静态,因为我想使用非静态字段“num”并想修改它的值。有非静态比较器内部类可以吗? 附加信息 对于每个对象,我都在计算内部的分数,并进行相应的比较和排序。我需要将这些分数保存在我在comparator内计算的地图中,并希望在外部类中使用该地图进行进一步计算。

  • 问题内容: 静态和非静态嵌套类有什么区别? 问题答案: 根据定义,内部类不能是静态的,因此我将重述您的问题为“静态和非静态嵌套类之间有什么区别?” 非静态嵌套类具有对其嵌套的类的成员的完全访问权。静态嵌套类没有对嵌套实例的引用,因此静态嵌套类无法调用非静态方法或访问嵌套该类的实例的非静态字段。

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