用作常量的 Java final 类在编译后保留

标签 java android android-studio gradle constants

我使用 final 类作为我的 static final 变量的常量持有者。我已经创建了我的 final 类,如下所示。

public final class ColorShape {
    public static final int CIRCLE = 1, SQUARE = 2;
}

所以这应该用作常量,并在代码编译成 android apk 或 java jar 后删除。

这几乎是对的一半,因为在我将它编译成 android apk 之后类仍然存在。

这是我反编译android apk后看到的

public final class ColorShape {

}

编辑:我还尝试使用关键字 abstract 而不是 final,结果与以

结尾的结果相同
public abstract class ColorShape {

}

我的 final ints 消失了,但类没有消失,是否有原因导致这种情况发生或我如何防止这种情况发生?我也想摆脱这门课。

最佳答案

我认为它已被 ProGuard 删除。

引自 https://developer.android.com/studio/build/shrink-code :

Code shrinking is available with ProGuard, which detects and removes unused classes, fields, methods, and attributes from your packaged app,...

关于用作常量的 Java final 类在编译后保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53854818/

相关文章:

java - 如何在 Web 服务器集群上生成唯一 ID

android - 如何识别Eddystone URL和uid?

android - Honeycomb 仅适用于平板电脑吗?

android - 更新 Gradle 后出现异常 'Could not resolve com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5'

带有 native 库错误的 Android Studio Gradle

java - 为什么我们不能将 BigDecimal 添加到 TreeSet ?

java - 处理关机事件

android - ionic 1、 ionic 和 ionic 3 之间有什么区别? ionic 2 和 ionic3 是一样的吗?

android - DexArchiveMergerException 仅在发布时出现

java - 如何测试在 JUnit 中的测试方法下创建的线程的完成情况