一、扩展成员
为现有的类添加方法、属性
扩展方法:fun X.y(): Z{}
扩展属性:val X.m 注意拓展属性不能初始化,类似于接口属性
二、下面来看一下例子
1.Java工具类的撰写
package net.println.kotlin.chapter4.extend;
* @author:wangdong
* @description:g工具类
public class Utils {
public static Boolean isEmpty(String[] args){
return args.length == 0;
public static Boolean isNotEmpty(String[] args){
return args.length > 0;
2.Java调用工具类
package net.println.kotlin.chapter4.extend;
import javax.rmi.CORBA.Util;
* @author:wangdong
* @description:Java拓展功能
public class ExtendsJava {
public static void main(String[] args) {
if (Utils.isEmpty(args)){
if (Utils.isNotEmpty(args)){
System.out.println(ExtendsKt.times("intel",20));
3.Kotlin工具类的撰写
package net.println.kotlin.chapter4.extend
* @author:wangdong
* @description:
fun main(args: Array<String>) {
println("abcdef".multiply(16))
println("abc" * 16)
/**调用成员方法*/
"abc".b = 5
println("abc".b)
/**扩展成员方法*/
/**定义一个循环方法,传入一个int,返回一个String*/
fun String.multiply(int: Int):String{
val stringBuilder = StringBuilder()
for (i in 0 until int){
stringBuilder.append(this)
return stringBuilder.toString()
/**定义一个循环方法,传入一个int,返回一个String*/
operator fun String.times(int: Int):String{
val stringBuilder = StringBuilder()
for (i in 0 until int){
stringBuilder.append(this)
return stringBuilder.toString()
/**扩展成员属性*/
val String.a: String
get() = "abc"
var String.b: Int
set(value) {
get() = 6
哈,结束了!
Kotlin 能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。 这通过叫做 扩展 的特殊声明完成。 例如,你可以为一个你不能修改的、来自第三方库中的类编写一个新的函数。 这个新增的函数就像那个原始类本来就有的函数一样,可以用普通的方法调用。 这种机制称为 扩展函数 。此外,也有 扩展属性 , 允许你为一个已经存在的类添加新的属性。
作为安卓开发,我们常常碰到这样的场景,需要把以dp为单位的值转化为以px为单位。这时候我们常会写一个Utils类,比如说
public class Utils {
public static float dp2px(int dpVal
随着Kotlin的普及,很有必要对开发中常用的工具类总结整理,当然包括
利用kotlin扩展Android原生控件方法、属性。
主要分工具类util跟原生控件扩展ext两部分
toast 用法
toast(“hello”)
click 用法
button.click{
// todo
启动activity
start+要启动的activity (比如 DemoActivity...
import android.content.ClipData
import android.content.Context
import android.graphics.drawable.Drawable
import android.os.Parcel
import android.vie
Kotlin 扩展
Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。
扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。
扩展函数
扩展函数可以在已有类中添加新的方法,不会对原类做修改,扩展函数定义形式:
fun receiverType.functionName(params){
receiverType:表示函数的接收者,也就是函数扩展的对象
functionName:扩展函数的名称
params:扩展函数的参数,可以为NULL
以下实例扩展 User 类 :
class User(var name:Str
Android 自定义对话框工具之空祖Dialog,集成三种风格+夜间模式对话框,以及等待、提示、分享等特色对话框,支持花式自定义
一.Dialog1:(创建对应的自定义类和对应的布局或者共用一个自定义类根据传进来的type来判断对应的布局和控件显示隐藏等)
1.自定义dialog类:
import android.app.Dialog
import android.content.Con...
最近在学习kotlin语言,写了一些android常用的工具类FileUtils.kt 文件操作类创建多级文件目录 mkDir(dirPath: String)创建文件 creatFile(filePath: String)删除文件 delFile(filepath: File)删除删除文件夹 delDir(dirpath: String)修改SD卡上的文件或目录名 renameFile(oldF...
//最大值 T为泛型
fun <T : Comparable<T>> max(vararg number: T): T {
if (number.isEmpty()) throw RuntimeException()
var maxNumber = number[0]
for (num in number) {
if (num > maxNumber) {
maxNumber = num
创建多级文件目录 mkDir(dirPath: String)
创建文件 creatFile(filePath: String)
删除文件 delFile(filepath: File)
删除删除文件夹 delDir(dirpath: String)
修改SD卡上的文件或目录名 renameFil
Kotlin 中创建类似 Java 的静态方法例子如下:object Utils {
fun isEmpty(string: String?): Boolean {
return string != null && string.length == 0
fun isWeakEmpty(string: String): Boolean {
/ 今日科技快讯 /据外媒报道,欧盟委员会周三宣布,已对美国芯片巨头英伟达收购英国芯片设计公司Arm的交易展开正式反竞争调查。英伟达于2020年9月宣布斥资400亿美元从日本软银集...