スタンドアントアンドロイドクラスstatic final int
では、異なるフラグを表すためにvarsが使用されます。例えば、visabilityフラグを見る:なぜstatic final intがenumを避けるアンドロイド標準クラスで使用されていますか?
/** @hide */
@IntDef({VISIBLE, INVISIBLE, GONE})
@Retention(RetentionPolicy.SOURCE)
public @interface Visibility {}
/**
* This view is visible.
* Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
* android:visibility}.
*/
public static final int VISIBLE = 0x00000000;
/**
* This view is invisible, but it still takes up space for layout purposes.
* Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
* android:visibility}.
*/
public static final int INVISIBLE = 0x00000004;
/**
* This view is invisible, and it doesn't take any space for layout
* purposes. Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
* android:visibility}.
*/
public static final int GONE = 0x00000008;
/**
* Mask for use with setFlags indicating bits used for visibility.
* {@hide}
*/
static final int VISIBILITY_MASK = 0x0000000C;
private static final int[] VISIBILITY_FLAGS = {VISIBLE, INVISIBLE, GONE};
開発者はこのケースでenum
の使用を避けるのはなぜ?
コードがJava 5よりも先行しているか、開発者が静的な 'int'を使用することを選択しました。 –
@ElliottFrisch時々、ビットバイディングが理由です。しかし、大きな理由はperfです。enumはパフォーマンスのためにひどく実装されています。 –