Java - 静态和最终变量

mar*_*ark 1 java static final

我知道这不起作用,但它只是一个例子,所以我可以理解为什么它不起作用.

public class MyClass {

    final static JButton b;

 public void myMethod() {
   b = new JButton("Hello!");
 }
 }
Run Code Online (Sandbox Code Playgroud)

1)为什么final static JButton b;线路出错?当我删除static关键字时,为什么这个错误会消失?

2)有或没有static关键字,行有一个错误b = new JButton("Hello!"); 我想知道为什么这是?我认为在方法中实例化最终变量是可以的.

Ted*_*opp 7

声明静态字段时final,必须在静态初始化程序块或初始化表达式中静态初始化它.您无法在构造函数中初始化它.

声明非静态字段时final,必须在每个构造函数中初始化它,或者使用初始化表达式或在实例初始化程序块中初始化它.