Android では Enum 使っちゃだめって先生は教えてくれなかった

だめなんですね。今 iOS と Android を両方同時に書いていて、 Android 側にほとんど Enum が出てこないので不思議に思っていました。

Manage Your App’s Memory | Android Developers

For example, enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android.

普通に公式ドキュメントに書いてあるので、知らない方が悪い案件だった。

公式の動画見ても、1個の Enum で 1K 使っちゃったりしてる!

必要ならば @IntDef とか @Retention とか使ってコンパイラに仕事させるのか。 Java って感じだ!

public abstract class ActionBar {
...
// Define the list of accepted constants and declare the NavigationMode annotation
@Retention(RetentionPolicy.SOURCE)
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
public @interface NavigationMode {}

// Declare the constants
public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;

// Decorate the target methods with the annotation
@NavigationMode
public abstract int getNavigationMode();

// Attach the annotation
public abstract void setNavigationMode(@NavigationMode int mode);
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.