private static Bank bank=new Bank();这段代码为什么会报错


package java2;
/*
 * 单例设计模式:
 * 1所谓单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例
 * 
 * 2如何实现
 * 
 */
public class SingletonTest1 {
public static void main(String[] args) {
    Bank.getInstance();
}
//饿汉式单例设计模式
 class Bank {
     //1私有化构造器
    private Bank() {
        
    }
    //2 内部创建类的对象
    //4要求此对象也声明为私有的对象
    private static Bank bank=new Bank();
    //3提供公共的静态的方法,返回类的对象
    public static Bank getInstance() {
        return bank;
    }
}
}

Bank要定义成static的,才能在main方法里调用

一种方法: class Bank 改成 static class Bank;
二种方法:28行的 } 移动到13行下面

static变量优先于构造器加载,所以你这逻辑上就是错误的!

Java中类及方法的加载顺序_Morty的技术乐园-CSDN博客_类加载顺序

是这个问题
Inner classes cannot have static declarations:内部类不能有静态声明

img