【发布时间】:2021-10-21 20:02:22
【问题描述】:
关于网络中的许多引用,我发现在 android 中使用 enum 会严重影响性能。所以对于更简单的int 或String 枚举,他们建议使用注释库@TypeDef。但是如果我有这样的枚举呢?
enum class Heroes(
val heroName: String,
val heroLevel: Int,
val healthPoints: Int,
val xpMultipleMax: Double
) {
GLAZIER("Glazier", 1, 25, 1.2),
ONYX("Onyx", 2, 35, 1.3),
PARDUS("Pardus", 3, 50, 1.5),
EAGLE_EYE("Eagle eye", 4, 70, 1.7),
TORNADO("Tornado", 5, 100, 2.0)
}
这里可以申请@TypeDef吗?我认为在这种情况下,即使R8 和Proguard 也无济于事,因为据我所知,它们只是帮助将枚举转换为int。但是,如果我为每个枚举有多个参数,他们将如何将其转换为 int?
P.S.我创建了一个枚举,只有一个整数值。 Proguard 已开启,但在反编译后,我看到它仍然在后台使用枚举。
enum class Heroes(
val heroLevel: Int,
) {
GLAZIER(1),
ONYX(3),
}
这就是枚举。现在看看反编译的类。
public enum Heroes {
GLAZIER,
ONYX;
private final int heroLevel;
public final int getHeroLevel() {
return this.heroLevel;
}
private Heroes(int heroLevel) {
this.heroLevel = heroLevel;
}
}
P.P.S 现在 Google 的人说可以使用枚举 - Source
【问题讨论】:
-
那么这里还有问题吗?
-
已经没有,但我离开了,也许它会帮助某人)
标签: android performance kotlin enums