Java 返回后代码出现编译器错误

Java 返回后代码出现编译器错误,java,compilation,return,Java,Compilation,Return,以下代码(代码段)中出现编译器错误。为什么这个代码不正确?解决办法 protected Dialog onCreateDialog(int paramInt) { switch (paramInt) { default: case 0: } for (Object localObject = null; ; localObject = this.dialog) { return localObject; // here problem cast this.dialog =

以下代码(代码段)中出现编译器错误。为什么这个代码不正确?解决办法

protected Dialog onCreateDialog(int paramInt)
{
 switch (paramInt)
 {
 default:
 case 0:
 }
 for (Object localObject = null; ; localObject = this.dialog)
 {
  return localObject; // here problem cast
  this.dialog = new ProgressDialog(this);
  this.dialog.setMessage(getResources().getString(2131165201));
  this.dialog.setIndeterminate(true);
  this.dialog.setCancelable(false);
 }
}

您在
this.dialog=newprogressdialog(this)之前有
return
语句
变得不可访问code,因为控件永远不会到达return语句之后的下一个直接语句这将导致编译错误。您需要将顺序翻转为:

    for (Dialog localObject = null; ; localObject = this.dialog)
    {
       this.dialog = new ProgressDialog(this);
       return localObject;
     }
我不确定你们的循环会做什么,但有一件事是肯定的,它不会循环,只会在第一次迭代中返回。另外,您的
localObject
将保持
null
,因为它不会到达
for
循环的
increment
块(由于return语句,它会提前返回)

EDIT:为了修复编译错误,将return语句移动到
循环的底部,如下所示:

    protected Dialog onCreateDialog(int paramInt)
    {
       switch (paramInt)
       {
         default:
         case 0:
       }
       for (Dialog localObject = null; ; localObject = this.dialog)
       {
          this.dialog = new ProgressDialog(this);
          this.dialog.setMessage(getResources().getString(2131165201));
          this.dialog.setIndeterminate(true);
          this.dialog.setCancelable(false);
          return localObject; // here problem cast
       }
      }
正如我前面提到的,我没有得到使用
for
循环的真正原因,因为它根本不会循环,因为里面有
return
语句。

在返回之后不能(或不应该)有任何代码。它被称为“死”或“不可访问”代码


首先,返回localObject,它被设置为null。不确定这是否会给您一个空指针异常,但这似乎有点可疑。其次,正如约根德拉所说,程序永远不会到达
this.dialog=newprogressdialog(this) 你读过这条消息了吗?以后,你会一直想用你的问题发布错误消息。它通常掌握着问题的关键,就像它在本例中所做的那样,因为它告诉您(和我们)到底是什么错了。为什么循环非常奇怪?
返回localObject;//这里是问题类型转换
请复制/粘贴错误,而不是对其进行解释。+1,但您缺少的关键点是,无法直接访问的代码将无法编译。@Vulcan:我明确添加了说明相同错误的消息。编译时出错,“无法从对象转换为对话框”@user1854920您的
localObject
声明应为
Dialog
类型,而不是
Object
,即
Dialog localObject=null
。我更新了答案。
for (Object localObject = null; ; localObject = this.dialog) {
   return localObject;
   this.dialog = new ProgressDialog(this);
}