classData<T>{} Log.d("test", Data<Int>().javaClass.name) Log.d("test", Data<String>().javaClass.name)// 输出com.study.jcking.weatherkotlin.exec.Data com.study.jcking.weatherkotlin.exec.Data 声明了一个泛型类Data<T>,并实现了两种不同类型的实例。但是在获取类名是,却发现得到了同样的...
dataclassArtist(varid:Long,varname: String,varurl: String,varmbid: String) 通过数据类,会自动提供以下函数: 所有属性的get() set()方法 equals() hashCode() copy() toString() 一系列可以映射对象到变量中的函数(后面再说)。 如果我们使用不可修改的对象,就像我们之前讲过的,假如我们需要修改这个对象状态...
data class Book(var name: String,private var authorName: String, var lastModified: Long, var rating: Float, var downloads: Int) A val parameter won’t have a setter defined implicitly(can’t be done explicitly too!). Default And Named Arguments in Data Class Following is our data class:...
data class JsonDemo2(var b: String = "") @Test fun test2() { val s1 = "{\"a\":{\"b\":123}}" val demo = s1.toJsonObject(JsonDemo1::class.java) logd(demo?.toJson()) } fun <T> String.toJsonObject(parseClass: Class<T>): T? { var t: T? = null try { t = JSON...
重写了hashCode方法 , 不再比较对象引用 , 而是比较对象的值 data class PlayerDataClass(val name: ...
fun<T:Any>T.deepCopy():T{//如果不是数据类,直接返回if(!this::class.isData){returnthis}//拿到构造函数returnthis::class.primaryConstructor!!.let{primaryConstructor->primaryConstructor.parameters.map{parameter->//转换类型//memberProperties 返回非扩展属性中的第一个并将构造函数赋值给其//最终value=第...
objectany// 因为没法直接用 _classMatchDataClass<T:Any>(privatevalkClass:KClass<T>,privatevalparams:Array<outAny>){init{if(!kClass.isData){throwIllegalArgumentException("Not a data class!")}}operatorfuncontains(input:Any):Boolean{// 实现「in」操作符returnif(!kClass.isInstance(input))falseel...
4 . filter 高阶函数对函数类型参数的使用 : 传入一个函数类型变量 predicate: (T) -> Boolean , 该函数类型变量通过 predicate(T) 进行调用 , 执行该函数返回 true 的元素 , 会被放到 filter 方法返回值集合中 ; 5 . filter 高阶函数示例 : ① 代码示例 : data class Student(var name : String, var...
// 其存在于SealedClassDemo.kt文件中 sealed class SealedExpr{ data class Person(val name : String, val age : Int) : SealedExpr() object Add : SealedExpr() companion object Minus : SealedExpr() } object NotANumber : SealedExpr() 其存在TestSealedDemo.kt文件中 fun <T>SealedExpr.Add.add...
The parent of a data class isn’t available to the compiler to use in defining the generatedcopy()function If the generated class needs to have a parameterless constructor, default values for all properties have to be specified: data class Task(var id: Int = 1000, var description: String ...