静态方法调用非静态方法——编译出现错误

Posted 静若飘絮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态方法调用非静态方法——编译出现错误相关的知识,希望对你有一定的参考价值。

 

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

上面的编译错误:可能由于静态public static main调用类的非静态方法AA

有两种解决办法:

第一种:

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

第二种:

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

 1、

public class Test_Static {
static class AA{
    public void print(){
        System.out.println("调用类方法");
    }
}
public static void main(String[] args) {
 AA aa=new AA();
 aa.print();
}

}

2、

class AAA{
    public void print(){
        System.out.println("调用类方法");
    }
}
public class Test_Static {
public static void main(String[] args) {
 AAA aa=new AAA();
 aa.print();
}

}

 

以上是关于静态方法调用非静态方法——编译出现错误的主要内容,如果未能解决你的问题,请参考以下文章

不应静态调用非静态方法 App\User::products()

无法对非静态方法 getAssets() 进行静态引用 - 无法在片段中播放音频

C#非静态的字段、方法或属性要求对象引用

VS提示“非静态的字段,方法或属性要求对象引用”

nodejs通过函数名进行静态方法调用出现类型错误,为啥?

非静态方法 self::getModuleById() 不能在带有 php 8.0.1 的 Joomla 模块上静态调用