Kotlin中的数据和对象类之间的区别是什么?
data class User(val name: String, val age: Int)
Run Code Online (Sandbox Code Playgroud)
和
object user {
val name = ""
fun printName(name: String) = "Hello, $name!"
}
Run Code Online (Sandbox Code Playgroud)
Kotlinobject类似于 Java 中的类,其中所有方法和变量都是静态的。
object User {
val name = ""
fun printName(name: String) = "Hello, $name!"
}
Run Code Online (Sandbox Code Playgroud)
Kotlin 中的类似于 Java 中的以下内容:
class User {
public static String name = "";
public static String printName(name: String) {
return "Hello " + name + "!";
}
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
//Kotlin
User.printName(User.name)
//Java
User.printName(User.name);
Run Code Online (Sandbox Code Playgroud)
不过,Anobject与我给出的 Java 比较并不完全相同。它可以继承接口和类,对象本身被实例化为单例实例。如果您使用 注释对象内的方法@JvmStatic,它们将成为真正的静态成员。
dataKotlin 中的类只是一个没有(或最少)逻辑并包含某些值的类的更简单的语法。Kotlin在数据类中为您生成equals(),hashCode()和toString()函数,以及其他一些辅助函数。
data class User(val name: String, val age: String)
Run Code Online (Sandbox Code Playgroud)
在 Kotlin 中,在 Java 中看起来像这样:
class User {
public final String name;
public final String age;
public User(String name, String age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object other) {
//Kotlin-generated equality check
}
@Override
public long hashCode() {
//Kotlin's hashcode
}
@Override
public String toString() {
return "User(name=" + name + ",age=" + age + ")";
}
//other generated methods
}
Run Code Online (Sandbox Code Playgroud)
objectobject 是Kotlin创建单例(一个实例类)的方法,该方法由编译器实例化。
data class数据类类似于常规类,但具有一些优点/缺点。
好处
equals()/hashCode()toString() componentN() copy()这些是从构造函数中指定的属性创建的。
限制条件
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |