🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### [Kotlin and Android](https://developer.android.com/kotlin/) Kotlin现在是Android上的官方语言。它富有表现力,简洁而强大。最重要的是,它可与我们现有的Android语言和运行时互操作。 [开始](https://www.kancloud.cn/alex_wsc/kotlin/691945) ### 现代。表现力。安全。 Kotlin在表达方面很简洁。它包含可空性和不变性的安全功能,可以使您的Android应用程序在默认情况下保持健康和高效。 ### 更安全的代码 编写更安全的代码,避免NullPointerExceptions在您的应用程序中。 ~~~ var output: String output = null // Compilation error ================================== val name: String? = null // Nullable type println(name.length()) // Compilation error ~~~ ### 可读和简洁 #### 数据类 专注于表达您的想法并编写更少的样板代码 ~~~ button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ doSomething(); } }); ~~~ #### Lambda表达式 使用lambdas简化代码。 **Java** ~~~ button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ doSomething(); } }); ~~~ **Kotlin** ~~~ button.setOnClickListener { doSomething() } ~~~ ### 默认和命名参数 使用默认参数减少重载函数的数量。使用命名参数调用函数以使代码更具可读性。 ~~~ fun format(str: String, normalizeCase: Boolean = true, upperCaseFirstLetter: Boolean = true, divideByCamelHumps: Boolean = false, wordSeparator: Char = ' ') { … } ================================== // Call function with named arguments. format(str, normalizeCase = true, upperCaseFirstLetter = true) ~~~ ### 跟你说再见 findViewById 避免findViewById()在代码中调用。专注于用较少的冗长来编写逻辑。 ~~~ import kotlinx.android.synthetic.main.content_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // No need to call findViewById(R.id.textView) as TextView textView.text = "Kotlin for Android rocks!" } } ~~~ ### 无需继承即可扩展功能 扩展函数和属性使您可以轻松扩展类的功能而无需继承它们。调用代码是可读且自然的。 ~~~ // Extend ViewGroup class with inflate function fun ViewGroup.inflate(layoutRes: Int): View { return LayoutInflater.from(context).inflate(layoutRes, this, false) } ================================== // Call inflate directly on the ViewGroup instance override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val v = parent.inflate(R.layout.view_item) return ViewHolder(v) } ~~~ ### 100%可与Java互操作 根据需要添加少量或多少Kotlin。Kotlin是一种可与Java完全互操作的JVM语言。 ~~~ // Calling Java code from Kotlin class KotlinClass { fun kotlinDoSomething() { val javaClass = JavaClass() javaClass.javaDoSomething() println(JavaClass().prop) } } ================================== // Calling Kotlin code from Java public class JavaClass { public String getProp() { return "Hello"; } public void javaDoSomething() { new KotlinClass().kotlinDoSomething(); } } ~~~ ### 伟大的工具支持 Android Studio 3.0提供了一些工具来帮助您开始使用Kotlin。将Java代码粘贴到Kotlin文件中时,转换整个Java文件或动态转换代码片段。 ![](https://box.kancloud.cn/61d1cbf7a7c5b3ebda88df0a6eec08df_460x106.png) ### Kotlin是开放的 就像Android一样,Kotlin是Apache 2.0下的一个开源项目。我们选择Kotlin重申了我们在开发和发展Android平台时对开放式开发人员生态系统的承诺,我们很高兴看到语言不断发展。 [在Github上看kotlin](https://github.com/JetBrains/kotlin) ### 使用Kotlin构建的应用程序 许多应用程序已经使用Kotlin构建 - 从最热门的初创公司到财富500强公司。 ### 最新消息和资源 ![](https://box.kancloud.cn/f48fc749f6d80e0cb9edd3e9c24c1b9e_416x563.jpg) ![](https://box.kancloud.cn/5b88164536420a1568f90ea8bd820d8d_418x575.jpg)