相关疑难解决方法(0)

为什么必须在构造函数完成之前初始化最终变量?

为什么必须在构造函数完成之前初始化最终变量?

public class Ex
{
  final int q;
}
Run Code Online (Sandbox Code Playgroud)

当我编译这段代码时,我得到这样的错误

错误:变量q可能尚未初始化

java

40
推荐指数
6
解决办法
6万
查看次数

未初始化的最终局部变量与未初始化的最终实例变量

据我所知,最终变量必须/只能初始化一次,否则编译器会抛出错误.

如果最终实例变量x未初始化,则抛出错误,但y在以下代码中保持未初始化本地变量时,我没有遇到任何错误:

import java.util.*;
public class test
{
 final int x = 5;// if final variable x uninitialized, compilation error occurs
 public static void main(String[] args)
 {
     final int y;   // y is not initialized, **no error is thrown** 
     System.out.println("test program");
 }
}
Run Code Online (Sandbox Code Playgroud)

java final declaration keyword

5
推荐指数
2
解决办法
120
查看次数

在java中不可变

Effective Java中,Bloch建议在使对象不可变时使所有字段成为最终字段.

有必要这样做吗?不会只给出访问器方法使它不可变.

例如

class A {
      private int x;
      A (int x) {
          this.x = x;
      }
}
Run Code Online (Sandbox Code Playgroud)

上述类是不可变的,即使我不申报xfinal吗?我错过了什么吗?

java immutability effective-java

3
推荐指数
2
解决办法
912
查看次数

Java switch 语句(为什么这是非法的?)

        final int a=2;
        final int b;
        b=3;
        
        switch(num){
            case a : // Legal
            case b : //Illegal
        }
Run Code Online (Sandbox Code Playgroud)

情况 a合法的,情况 b非法的

谁能解释为什么?

java switch-statement

0
推荐指数
1
解决办法
72
查看次数