我只是想知道为什么我用以下代码得到“无法解析符号initialText”。 isItA是用户之前选择的布尔值,具体取决于它们将要粘贴到文本区域的文本类型(A或B)。 initialText有2个潜在的字符串,输出的字符串取决于布尔值isItA。当我在if / else语句之外使用initialText时,我不明白为什么会出现此错误;如果在'if / else'语句中,编译器应该能够解析外面的字符串吗?我目前在IntelliJ中使用GWT。在这一点上,我仍然是java的菜鸟,所以对此为何发生的基本解释将非常感激:)提前感谢。下面是一段代码。
protected TextArea getNewTextArea() {
if ( newTextArea == null ) {
if (isItA){
final String initialText = "Please paste valid text A here, and then
press" + "the \"" + Labels.ADD_A_BUTTON_TEXT + "\" button.";
}else{
final String initialText = "Please paste valid text B here, and then press " + "the \"" + Labels.ADD_B_BUTTON_TEXT + "\" button.";
}
newTextArea = new TextArea();
newTextArea.setText( initialText );
newTextArea.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent clickEvent ) {
// If the text is still the original text, then clear it.
if ( newTextArea.getText().equals( initialText ) ) {
newTextArea.setText( "" );
}
}
});
}
}
答案 0 :(得分:3)
initialText是不可解的,因为它不在给定的代码块范围内。
要解决此问题,请在if / else语句之前声明intitalText,如下所示:
protected TextArea getNewTextArea() {
if ( newTextArea == null ) {
final String initialText;
if (isItA){
initialText = "Please paste valid text A here, and then
press" + "the \"" + Labels.ADD_A_BUTTON_TEXT + "\" button.";
}else{
initialText = "Please paste valid text B here, and then press " + "the \"" + Labels.ADD_B_BUTTON_TEXT + "\" button.";
}
newTextArea = new TextArea();
newTextArea.setText( initialText );
newTextArea.addClickHandler( new ClickHandler() {
public void onClick( ClickEvent clickEvent ) {
// If the text is still the original text, then clear it.
if ( newTextArea.getText().equals( initialText ) ) {
newTextArea.setText( "" );
}
}
} );
}
答案 1 :(得分:0)
因为你的final String initialText
是if-else
块的本地。所以,在if-else块之外声明它,然后在其中初始化。
答案 2 :(得分:0)
initialText仅存在于curlies块内。
答案 3 :(得分:0)
您需要将initialText移动到功能块
开头的正下方protected TextArea getNewTextArea(){
String initialText ...