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时间,如果每个类都搞一下,岂不是很烦人。
Top comments (0)