kotlin data class 看下反编译的代码
qiudaozhang
Posted on June 21, 2022
kotlin
data class IdModel(val id: String)
对应的class文件反编译查看为
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@Metadata(mv = {1, 7, 1}, k = 1, xi = 48, d1 = {"\000\"\n\002\030\002\n\002\020\000\n\000\n\002\020\016\n\002\b\006\n\002\020\013\n\002\b\002\n\002\020\b\n\002\b\002\b\b\030\0002\0020\001B\r\022\006\020\002\032\0020\003\006\002\020\004J\t\020\007\032\0020\003H\003J\023\020\b\032\0020\0002\b\b\002\020\002\032\0020\003H\001J\023\020\t\032\0020\n2\b\020\013\032\004\030\0010\001H\003J\t\020\f\032\0020\rH\001J\t\020\016\032\0020\003H\001R\021\020\002\032\0020\003\006\b\n\000\032\004\b\005\020\006\006\017"}, d2 = {"Lbasic/IdModel;", "", "id", "", "(Ljava/lang/String;)V", "getId", "()Ljava/lang/String;", "component1", "copy", "equals", "", "other", "hashCode", "", "toString", "exposed_tutorial"})
public final class IdModel {
@NotNull
private final String id;
public IdModel(@NotNull String id) {
this.id = id;
}
@NotNull
public final String getId() {
return this.id;
}
@NotNull
public final String component1() {
return this.id;
}
@NotNull
public final IdModel copy(@NotNull String id) {
Intrinsics.checkNotNullParameter(id, "id");
return new IdModel(id);
}
@NotNull
public String toString() {
return "IdModel(id=" + this.id + ')';
}
public int hashCode() {
return this.id.hashCode();
}
public boolean equals(@Nullable Object other) {
if (this == other)
return true;
if (!(other instanceof IdModel))
return false;
IdModel idModel = (IdModel)other;
return !!Intrinsics.areEqual(this.id, idModel.id);
}
}
在类的基础上自动添加了很多方法,同时也把class标记为了final,不可继承,这就有个问题, 我们又希望使用data class的便利,还想继承怎么搞,比如在mongodb里面我可能需要基础的class,记录了id和created,updated时间,如果每个类都搞一下,岂不是很烦人。
💖 💪 🙅 🚩
qiudaozhang
Posted on June 21, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
undefined Evolution of Programming Languages: A Journey Through First Release Years
November 23, 2024