我使用Android studio的Kotlin插件将我的Java类转换为Kotlin.事情是它还不是Kotlin风格.我想改用Kotlin Data Class.但每当我使用主要和辅助构造函数创建它时,它将无法工作.在我的情况下,正确的DATA类实现是什么?
class Task {
@SerializedName("_id")
var id: String? = null
@SerializedName("text")
var taskTitle: String? = null
@SerializedName("completed")
var isCompleted: Boolean? = null
constructor(taskTitle: String) {
this.taskTitle = taskTitle
}
constructor(taskTitle: String, completed: Boolean?) {
this.taskTitle = taskTitle
this.isCompleted = completed
}
constructor(id: String, taskTitle: String, isCompleted: Boolean?) {
this.id = id
this.taskTitle = taskTitle
this.isCompleted = isCompleted
}
}
Run Code Online (Sandbox Code Playgroud) 我知道Kotlin从数据类继承有一些限制.在进行这次讨论时,我学到了更多.
因为Kotlin中的数据类与Java中的POJO类似.我们是否应该不遵循Java POJO类中的继承?总结一下,是不是因为Kotlin的限制我们不允许从数据类继承,或者如果你这样做,设计中存在缺陷.
把它分解成一个更简单的问题.从Java中的POJO类继承是错误的吗?
我有一个抽象类:
abstract class SuperClass(private val privateVal: Int)
我有一个data class扩展抽象类。( DataClass)
如何privateVal在DataClass构造函数中将其作为参数并将其传递给SuperClass构造函数?
以下将不起作用,因为数据类构造函数中只允许使用vals 和vars:
data class DataClass(privateVal: Int) : SuperClass(privateVar)
我有一个看起来像这样的数据类
data class SuggestionResponse(
val metadata: Metadata,
val response: Response
)
data class Response(
///blah blah
)
data class Metadata(
val timeleft: String,
val totalTime: String
)
Run Code Online (Sandbox Code Playgroud)
现在我需要将此数据转换为不同类型的数据对象。我想编写一个扩展函数来完成此任务。让函数的名字是你好
我想像这样调用这个扩展函数
suggestionResponse.hello()
我如何编写扩展功能?。任何帮助将不胜感激
从Kotlin开始,想要创建一个数据类
data class Person(val Email: String, val firstName: String, val lastName: String)
Run Code Online (Sandbox Code Playgroud)
但是,假设我要添加在我使用构造函数时不知道的其他属性,但是我想在以后知道例如某人的心情时存储此数据(表示为串)
在Java中,我将创建这样的数据类。我将不能将其包含在构造函数中,并在以后可以设置它的地方做一个吸气剂。
public class Person{
private String email;
private String firstName;
private String lastName;
private String mood;
public person (String email, String firstName, String lastName){
this.email = email;
this.firstName = firstName;
this.lastName = lastName;
}
public setMood(String mood){
this.mood = mood;
}
}
Run Code Online (Sandbox Code Playgroud)
Kotlin似乎对此没有答案,或者如果我不知道如何正确表达。因此,为什么这个问题已经可以回答,而我却找不到。
我确实了解到,通过不在数据类行中包含情绪,Kotlin可能无法将情绪识别为数据类的一部分,但是除了将其包含在构造函数中并将其设置为null之外,我不确定是否还要做什么或那是我应该做的吗?
我无法找到制作收藏夹列表的好方法。我有一个回收器视图,带有一个用于将项目存储到的按钮Favorites,我可以轻松地存储这些项目id,但随后我必须重新进行网络调用才能获取一些基本信息来填充列表项视图。
这是我的回收器视图的屏幕截图..
这些项目是一个简单的数据类,定义如下
data class CoinListItem(
@Expose
@SerializedName("id")
var id: String? = null,
@Expose
@SerializedName("name")
var name: String? = null,
@Expose
@SerializedName("symbol")
val symbol: String? = null,
@Expose
@SerializedName("website_slug")
val slug: String? = null,
@Expose
@SerializedName("quote")
val quoteItem: CoinListQuoteItem? = null,
@Expose
@SerializedName("tags")
val tags: List<String>? = null): Parcelable
Run Code Online (Sandbox Code Playgroud)
有没有办法将自定义对象保存到磁盘?
data-class ×6
kotlin ×6
android ×3
inheritance ×2
constructor ×1
java ×1
persistence ×1
pojo ×1
superclass ×1