在最终修饰符中接收错误

Posted

技术标签:

【中文标题】在最终修饰符中接收错误【英文标题】:Receiving Error in final Modifier 【发布时间】:2013-03-01 12:45:48 【问题描述】:

在我的 android 应用程序中,这里有一段代码。

final String line;
while ((line = rd.readLine()) != null) 
 // Print the response output...
 offer.this.runOnUiThread(new Runnable() 
 public void run() 
    Toast.makeText(getBaseContext(), ""+line.toString(), Toast.LENGTH_LONG).show();
    //Toast.makeText(getBaseContext(),"data inserted",Toast.LENGTH_SHORT).show();
    
  );

在上面的代码中,我将 line 声明为“final”,它显示错误为

可能已经分配了最终的局部变量行

排队

while ((line = rd.readLine()) != null)

所以,我删除了 final 修饰符。现在它显示错误为

不能引用在不同方法中定义的内部类中的非最终变量行

排队

Toast.makeText(getBaseContext(), ""+line.toString(), Toast.LENGTH_LONG).show();

我在 while 循环中声明了一个局部字符串变量,并为其分配了行值。代码是

while ((line = rd.readLine()) != null) 
    final String e=line.toString();
    offer.this.runOnUiThread(new Runnable() 
    public void run() 
        Toast.makeText(getBaseContext(), ""+e.toString(), Toast.LENGTH_LONG).show();
        
    );
 

它也显示错误。我无法理解这一点。有人可以说如何在我的代码中避免这个错误。

提前致谢。

【问题讨论】:

【参考方案1】:
String line;
while ((line = rd.readLine ()) != null) 
    final String l = line;
    offer.this.runOnUiThread (
        new Runnable () 
            public void run () 
                Toast.makeText (getBaseContext(), l, Toast.LENGTH_LONG).show ();
            
        
    );

【讨论】:

以上是关于在最终修饰符中接收错误的主要内容,如果未能解决你的问题,请参考以下文章

在“ExtendedProperties”之类的修饰符中添加的 certutil 语法是啥

Solidity:如何在函数修饰符中应用 OR 运算符?

条件“if”修饰符中的 Ruby 变量赋值

成员变量/方法/ getter和setter是否可以包含在一个公共访问修饰符中?

正则表达式模式修饰符

成员访问修饰符