不可以。
因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。
也就是说,当一个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法关联到那个对象上的呢?这个逻辑无法成立,所以,一个 static 方法内部不能发出对非 static 方法的调用。
static 方法是静态方法,是属于类的方法,非 static 方法是属于对象的方法,所以在 static 方法中想要调用非 static 方法,要先新创建一个对象,再有这个对象来调用非 static 方法。
本质是 jvm 加载顺序约定的,加载 static 方法的时候非静态方法还没初始化,当然不能调用了。