为什么Eclipse在返回后总是给我一个错误;

时间:2012-04-20 11:12:38

标签: java eclipse

我对eclipse android有一些问题。

我有一些java文件,但是如果我在返回后调用一个方法; (参见示例)它告诉我删除方法。为什么?我正在使用Android 1.6。

public void onClick(View paramView)
 {
  switch (paramView.getId())
{
default:
case 2131296257:
}
while (true)
{
  return;
  fetchAlarmSettings();  <-- It tells me to remove this.
  if (this.strAlarmOnOff.equals("0"))
  {
    this.butAlarmSet.setText("Turn Alarm Off");
    this.db.updateSetting("alarmTime", this.strHour.concat(this.strMinute));
    this.db.updateSetting("alarmOnOff", "1");
    switch (this.cal.compareTo(Calendar.getInstance()))
    {
    default:
    case -1:
    }
    while (true)
    {
      this.setNotifications.setAlarm(this.cal);
      break;
      this.cal.roll(5, 1);
    }
  }
  this.butAlarmSet.setText("Turn Alarm On");
  this.db.updateSetting("alarmOnOff", "0");
  this.setNotifications.turnAlarmOff();
}
 }

谢谢!

3 个答案:

答案 0 :(得分:6)

您的方法将在return语句被命中的那一刻停止运行。基本上它应该给你一个'Unreachable code!'警告,因为return语句之后的任何代码都不会被执行。删除return关键字可以解决问题。

所以基本上Eclipse告诉你删除return之后的下一行,因为它永远不会执行。如果你删除了方法调用,它会抱怨你接下来会抛出什么行。

除此之外,还有其他(根据我)你的代码存在缺陷......在这种情况下,没有中断条件的while(true)循环似乎很奇怪(但是我可能在这里错了)。此外,default块通常位于一系列case语句的末尾。你的第二个while(true)循环只会迭代一次,因为一旦执行this.setNotifications.setAlarm(this.cal);,循环将因break语句而停止迭代。

答案 1 :(得分:1)

Eclipse不允许你编写绝对代码,实际上IDE使用java编译器。

在这种情况下,某些分支中的返回下面的代码(意味着您可以在if中返回并在else的代码之后)无法访问,因此您会收到编译错误。

答案 2 :(得分:1)

简单回答,你不能在'return'语句后执行任何操作。