Kotlin 处理位操作Flag 快捷方法

Posted 技术小黑屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 处理位操作Flag 快捷方法相关的知识,希望对你有一定的参考价值。

一般涉及到标记位相关的操作,我们都会使用位运算,无论你是从Java转到Kotlin,还是全新使用Kotlin,进行位运算处理Flag都会感到疑问,该怎么处理呢。

这里简单整理了几个方法,文件名为(FlagExt.kt)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@file:JvmName("FlagUtil")
/**
 * 添加flag
 */
fun Int.addFlag(flag: Int): Int 
    return this or flag


/**
 * 移除flag
 */
fun Int.removeFlag(flag: Int): Int 
    return this and flag.inv()


/**
 * 检查是否包含flag
 */
fun Int.hasFlag(flag: Int): Boolean 
    return this and flag == flag

如下是验证代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fun main() 
    var flags = 0
    val FLAG_AUTO_REBOOT = 1
    println("flags.hasAutoRebootFlag=$flags.hasFlag(FLAG_AUTO_REBOOT)")
    flags = flags.addFlag(FLAG_AUTO_REBOOT)
    println("flags.hasAutoRebootFlag(afterAdded)=$flags.hasFlag(FLAG_AUTO_REBOOT)")
    flags = flags.removeFlag(FLAG_AUTO_REBOOT)
    println("flags.hasAutoRebootFlag(afterRemoved)=$flags.hasFlag(FLAG_AUTO_REBOOT)")

    /**
     * result:
     * flags.hasAutoRebootFlag=false
     * flags.hasAutoRebootFlag(afterAdded)=true
     * flags.hasAutoRebootFlag(afterRemoved)=false
     */

结果如下

1
2
3
flags.hasAutoRebootFlag=false
flags.hasAutoRebootFlag(afterAdded)=true
flags.hasAutoRebootFlag(afterRemoved)=false

以上。

以上是关于Kotlin 处理位操作Flag 快捷方法的主要内容,如果未能解决你的问题,请参考以下文章

Android 全面屏处理(适配挖孔屏刘海屏) kotlin

KotlinKotlin 与 Java 互操作 ③ ( Kotlin 中处理 Java 异常 | Java 中处理 Kotlin 异常 | @Throws 注解处理异常 | 函数类型互相操作 )

flag+文件操作

如何使用 java / kotlin 中的注释处理将方法附加到现有类?

kotlin 的get() set() 方法

phpstorm的全局操作快捷键ctrl+shift+f被搜狗占用处理方法