在java中我们会去定义一些工具类,用来扩展一些类的方法,如下:
public class Utils {
public static boolean isEmpty(String[] args){
return args == null || args.length == 0;
}
public static boolean isNotEmpty(String[] args){
return args.length > 0;
}
}
public class Extends {
public static void main(String... args){
if (Utils.isEmpty(args)){
}
if (Utils.isNotEmpty(args)){
}
}
}
在kotlin中我们可以采取扩展函数来,可以不需要去写工具类,直接扩展现有类的方法如下:
fun main(args: Array<String>) {
if (args.isEmpty()){
}
}
isEmpty其实就是Array的扩展方法
@kotlin.internal.InlineOnly
public inline fun <T> Array<out T>.isEmpty(): Boolean {
return size == 0
}
下面我们自己来定义一个扩展函数
fun main(args: Array<String>) {
println("abc")
}
如果我想打印"abc"16次可以定义如下扩展函数
//扩展函数
fun String.multiply(int : Int):String{
val stringBuilder = StringBuilder();
for (i in 0 until int){
stringBuilder.append(this)
}
return stringBuilder.toString()
}
fun main(args: Array<String>) {
println("abc".multiply(16))
}
另外我们还可以对运算符进行重载
//运算符号重载
operator fun String.times(int : Int):String{
val stringBuilder = StringBuilder();
for (i in 0 until int){
stringBuilder.append(this)
}
return stringBuilder.toString()
}
fun main(args: Array<String>) {
println("abc"*16)
}
最后输出
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc
除了方法可以扩展外,属性也是可以扩展的
val String.a : String
get() = "abc"
var String.b : Int
set(value){
}
get() = 5
fun main(args: Array<String>) {
println("abc".a)
println("abc".b)
}
以上就是我对kotlin中的扩展函数的一些总结,希望对大家有帮助~
最后
在这里我总结出了互联网公司Android程序员面试简历模板,面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料免费分享给大家【包括高级UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)、Flutter等架构技术资料】,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。