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;
}
}
}