【问题标题】:How to make code easier to read when using anonymous inner classes in java for Android apps?在 Java 中为 Android 应用程序使用匿名内部类时,如何使代码更易于阅读?
【发布时间】:2024-01-16 04:57:01
【问题描述】:

根据我使用 Android 应用程序的经验,看到很多匿名内部类并不少见。现在我正在开发自动更新功能,下面有一些代码示例。

@Override
public void onStart() {
    super.onStart();

    IsUpdateAvailableTask task = new IsUpdateAvailableTask(){

        @Override
        protected void onPostExecute(Boolean updateAvailable) {
            super.onPostExecute(updateAvailable);
            if (updateAvailable) {
                UpdateAvailableDialogFragment dialogFragment = UpdateAvailableDialogFragment.newInstance();
                dialogFragment.show(getFragmentManager(), UpdateAvailableDialogFragment.class.getSimpleName());
                TaskFragment.updateDialogShown = true;
            }
        }

    };

    task.execute(mParameters.getHostUrl(), mParameters.getPackageName(), mParameters.getVersionName());
}

我对这种方法的问题是代码 hadoukens 变得非常频繁,使得仅查看代码变得更加困难。我想知道是否有任何方法可以提高代码的可读性以减少 hadouken 或至少将其分解。由于异步任务不是接口,因此 Lambda 在这种情况下无法工作。

【问题讨论】:

  • 写入旧 api 级别如何阻止您使用 lambdas?
  • 对不起,我误解了为什么我不能使用 lambdas。在问题中进行了修复。
  • 正如 shmakova 回答的那样,即使您编写了一个库,您仍然可以使用 lambda。如果您仍然不想这样做,没有灵丹妙药,您可以使用示例代码代替: 1. 将task 设为一个字段。 2. 使用内部类 3. 使用本地类。 4. 在方法中创建task。可能还有其他选择。

标签: java android coding-style


【解决方案1】:

您可以在库代码中使用 lambda。 对于它,您可以使用retrolambda gradle 插件,或者您可以使用已经支持 java 8 功能的新 Android Studio 3.0。 Jack 在今年春天被弃用了。

【讨论】: