Kotlin学子总结---实体类

kotlin的实体类,默认已经存在getter和setter函数, 成员可见性默认public通常不需要显示声明, 但是private和protected需要显示声明

1. 构造函数声明方式一

通常情况下与java结构差不多, 就是成员变量声明

package com.mobile.emm.h5

import android.net.Uri
import android.text.TextUtils
import com.mobile.emm.debugger.Log;

/**
 * 定义的H5应用信息
 * @author: zhanghao
 * @Time: 2021-04-21 19:34
 */
class H5AppInfo(/*var title: String, var url: String*/) {
    /**
     * 标题
     */
    var title: String = "";

    /**
     * 地址
     */
    var url: String = "";

    /**
     * 描述
     */
    var summary: String = "";

    /**
     * 是否为SSO登录
     */
    var sso: Boolean = false;

    /**
     * SSO登录的应用ID
     */
    var ssoAppId: String = "";

    /**
     * 重载构造函数, 还可以声明其他的构造函数.
     */
    public constructor(title: String, url: String) {
        this.title = title;
        this.url = url;
    }

    /**
     * 重载构造函数, 还可以声明其他的构造函数.
     */
    public constructor(title: String, url: String, summary: String) {
        this.title = title;
        this.url = url;
        this.summary = summary;
    }

    val isSso: Boolean
    get() {
        return sso;
    }

    /**
     * 方法定义
     */
    fun isValid(): Boolean {
        return !TextUtils.isEmpty(url) && !TextUtils.isEmpty(title);
    }

    /**
     * 方法定义
     */
    fun getUri(): Uri? {
        return try {
            Uri.parse(url);
        } catch (e: Exception) {
            Log.e("H5AppInfo", "getUri: $e, url=$url", e)
            null;
        }
    }
}

以上构造函数在类中声明, 还有一种构造函数声明方式: 

构造函数声明方式二

class H5AppInfo(var title: String, var url: String) {}, 类里面不能再重复明明成员变量.

有点怪怪的,个人不喜欢.

package com.mobile.emm.h5

import android.net.Uri
import android.text.TextUtils
import com.mobile.emm.debugger.Log;

/**
 * 定义的H5应用信息
 * @author: zhanghao
 * @Time: 2021-04-21 19:34
 */
class H5AppInfo(var title: String, var url: String) {
   
    /**
     * 描述
     */
    var summary: String = "";

    /**
     * 是否为SSO登录
     */
    var sso: Boolean = false;

    /**
     * SSO登录的应用ID
     */
    var ssoAppId: String = "";

    /**
     * 重载构造函数, 还可以声明其他的构造函数.
     */
    public constructor(title: String, url: String, summary: String) {
        this.title = title;
        this.url = url;
        this.summary = summary;
    }

    val isSso: Boolean
    get() {
        return sso;
    }

    /**
     * 方法定义
     */
    fun isValid(): Boolean {
        return !TextUtils.isEmpty(url) && !TextUtils.isEmpty(title);
    }

    /**
     * 方法定义
     */
    fun getUri(): Uri? {
        return try {
            Uri.parse(url);
        } catch (e: Exception) {
            Log.e("H5AppInfo", "getUri: $e, url=$url", e)
            null;
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值