【问题标题】:Android cannot override the final method from ThreadAndroid 无法覆盖来自 Thread 的 final 方法
【发布时间】:2026-01-09 15:45:01
【问题描述】:

我是 Android 新手,我使用 eclipse。 我正在我的Android手机上制作一个带有蓝牙的应用程序,版本是2.3。 我使用从 SDK 管理器下载的示例并进行更改,因此它适用于我。 在示例文件“BluetoothServiceChat”中,他们调用函数 public synchronized void stop()。

现在 Eclipse 抛出一个错误,并显示“无法覆盖 Thread 的最终方法”。 我该怎么做才能解决这个问题?

我使用来自here的代码解释

停止函数示例代码:

/**
* Stop all threads
*/
public synchronized void stop() {
  if (D) Log.d(TAG, "stop");

  if (mConnectThread != null) {
      mConnectThread.cancel();
      mConnectThread = null;
  }

  if (mConnectedThread != null) {
      mConnectedThread.cancel();
      mConnectedThread = null;
  }

  if (mSecureAcceptThread != null) {
      mSecureAcceptThread.cancel();
      mSecureAcceptThread = null;
  }

  if (mInsecureAcceptThread != null) {
      mInsecureAcceptThread.cancel();
      mInsecureAcceptThread = null;
  }
  setState(STATE_NONE);

}

提前致谢

【问题讨论】:

    标签: java android


    【解决方案1】:

    你不能。最终方法不能被设计覆盖。平台/框架开发人员不希望应用程序开发人员为抽象和安全问题重写某些方法。这个问题和你的类似:

    Java `final` method: what does it promise?

    【讨论】:

    【解决方案2】:

    也许你应该调用它(停止方法)而不是覆盖?

    【讨论】:

      【解决方案3】:

      我在我写的另一个帖子中找到了我的问题的答案: android-the-return-type-is-incompatible-with-thread-getstate

      感谢大家的帮助

      【讨论】:

        最近更新 更多