文章目录
- 1. 数据类
- 2. 单例
- 3. 静态
1. 数据类
data class Cellphone(val brand: String, val price: Double)
自动生成了get set hashcode equals toString等方法。通过反编译(打开AS,在Tools-Kotlin-ShowBytecode-Decompile)可以得到如下结果
public final class Cellphone {@NotNullprivate final String brand;private final double price;@NotNullpublic final String getBrand() {return this.brand;}public final double getPrice() {return this.price;}public Cellphone(@NotNull String brand, double price) {Intrinsics.checkNotNullParameter(brand, "brand");super();this.brand = brand;this.price = price;}@NotNullpublic final String component1() {return this.brand;}public final double component2() {return this.price;}@NotNullpublic final Cellphone copy(@NotNull String brand, double price) {Intrinsics.checkNotNullParameter(brand, "brand");return new Cellphone(brand, price);}// $FF: synthetic methodpublic static Cellphone copy$default(Cellphone var0, String var1, double var2, int var4, Object var5) {if ((var4 & 1) != 0) {var1 = var0.brand;}if ((var4 & 2) != 0) {var2 = var0.price;}return var0.copy(var1, var2);}@NotNullpublic String toString() {return "Cellphone(brand=" + this.brand + ", price=" + this.price + ")";}public int hashCode() {String var10000 = this.brand;return (var10000 != null ? var10000.hashCode() : 0) * 31 + Double.hashCode(this.price);}public boolean equals(@Nullable Object var1) {if (this != var1) {if (var1 instanceof Cellphone) {Cellphone var2 = (Cellphone)var1;if (Intrinsics.areEqual(this.brand, var2.brand) && Double.compare(this.price, var2.price) == 0) {return true;}}return false;} else {return true;}}
}
2. 单例
class改成object,其他的跟java里面差不多
object Singleton {
}
3. 静态
companion object
@JvmField - 修饰静态变量
@JvmStatic - 修饰静态方法
@JvmField 和 @JvmStatic 只能写在 object 修饰的类或者 companion object 里,写法虽然有些别扭,但是效果是真的是按 static 来实现的
class BookKotlin {companion object {@JvmFieldvar nameStatic: String = "BB"@JvmStaticfun speakStatic() {}}
}