簡體   English   中英

為 static 最終變量賦值

[英]Assigning value to a static final variable

我有一個 class,它本身有多個實例,想知道是否有辦法覆蓋或抑制警告“變量‘x’可能尚未初始化”。

class Main{
        public Main(){
            Astronaut.GenerateData(5);
            Astronaut me = new Astronaut();
        }
}

class Astronaut extends Player{
        private static final int HEIGHT;
        public Astronaut(){
            super();
            /*Does stuff*/
        }
        
        public static void GenerateValues(int valueToBeUsed){
            HEIGHT=valueToBeUsed;
        }
    }

我嘗試了很多不同的選擇,我知道解決這個問題的方法,但總的來說,如果我能這樣做,代碼會更清晰。

首先,我認為您不應該在Player class 中將HEIGHT聲明為static var。但這可能是一個測試代碼,所以由您決定。

談到這個問題,我不確定你提到的解決方法是什么,但由於以下問題,這段代碼是wrong的:

  1. JVM 沒有為final變量分配默認值,您需要用一些值對其進行初始化。
  2. static final class 變量應在聲明時或在static塊內初始化。
  private static final int HEIGHT;
  static {
    HEIGHT = 10;
  }
  1. 您不能為final變量分配新值。 所以這個HEIGHT=valueToBeUsed; 會導致編譯錯誤。

基於以上內容,您得到的不僅僅是警告,而是編譯時錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM