簡體   English   中英

如何將字符串變量傳遞給java中的新對象

[英]How to pass a String variable to a new object in java

我是 Java 新手,不確定如何正確執行此操作。

我有一個 String 變量textMain ,我想將它傳遞給一個新對象TextToSpeech 是否可以? 如果是這樣,該怎么做?

我必須在對象之外聲明這個變量,不幸的是這個對象沒有“看到”這個變量。

String textMain = "text text";
textToSpeechSystem = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS) {
            speak(textMain); // textMain doesn't visible
        }
    }
});

對不起,如果我寫錯了,我還不知道正確的命名法。

您要傳遞字符串的對象需要有一個字段來存儲值

假設您有一個帶有構造函數的 TextToSpeech 類,該構造函數具有一個字符串參數,用於在創建對象時設置值。

public class TextToSpeech {
  private String textMain;
  ...

  public TextToSpeech(String text, ...) {
    textMain = text;
    ...
  }
}

或者您可以使用 setter 方法在對象創建后設置值

public void setText(String text) {
  textMain = text;
}

任何時候您在匿名類/ lambda 中引用局部變量時,您都需要將該變量聲明為最終的(不可變的)。

final String textMain = "text text";
textToSpeechSystem = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS) {
            speak(textMain); // textMain doesn't visible
        }
    }
});

那是因為TextToSpeech.OnInitListenertextMain在內存中的位置不同: TextToSpeech.OnInitListener位於堆中,當前上下文關閉后可用,但textMain位於堆棧中,當前上下文關閉后不可用。

要解決這個問題。 您所要做的就是將textMain移動到堆中

final String textMain = "text text";

暫無
暫無

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

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