以下兩個java類都初始化一些最終字段,第一個不會編譯(變量未初始化錯誤),第二個編譯正常。爲什麼?初始化java中的最後一個字段
public class Craps {
public static enum Outcome {ONGOING, WIN_FIRST, WIN_POINT, LOSE_FIRST, LOSE_POINT};
private int currentNumber;
private final int point;
private Outcome gameResult = Outcome.ONGOING;
private static SecureRandom randomNumbers = new SecureRandom();
public static int rollDice() {
return 2 + randomNumbers.nextInt(6) + randomNumbers.nextInt(6);
}
public Craps() {
currentNumber = rollDice();
switch (currentNumber) {
case 7:case 11:
gameResult = Outcome.WIN_FIRST;
break;
case 2:case 3:case 12:
gameResult = Outcome.LOSE_FIRST;
break;
default:
point = currentNumber;
}
}
public void moreRolls() {
currentNumber = rollDice();
if(currentNumber == point) {
gameResult = Outcome.WIN_POINT;
} else if(currentNumber == 7) {
gameResult = Outcome.LOSE_POINT;
}
}
public Outcome getGameResult() {
return gameResult;
}
public int getPoint() {
return point;
}
public int getCurrentNumber() {
return currentNumber;
}
}
public enum Book {
AHTP("book1", "1998"),
BHTP("book1", "1998"),
CHTP("book1", "1998"),
DHTP("book1", "1998"),
EHTP("book1", "1998"),
FHTP("book1", "1998");
private final String title;
private final String copyrightYear;
Book(String bookTitle, String year) {
title = bookTitle;
copyrightYear = year;
}
public String getCopyrightYear() {
return copyrightYear;
}
public String getTitle() {
return title;
}
}