android - 如何在 Kotlin Android 中为数据类创建构造函数?
问题描述
如何在 Kotlin Android 中为数据类创建构造函数?
data class EventItem(
@SerializedName("dateEvent")
val dateEvent: String,
@SerializedName("dateEventLocal")
val dateEventLocal: Any,
@SerializedName("idAwayTeam")
val idAwayTeam: String,
@SerializedName("idEvent")
val idEvent: String,
@SerializedName("idHomeTeam")
val idHomeTeam: String,
@SerializedName("idLeague")
val idLeague: String,
@SerializedName("idSoccerXML")
val idSoccerXML: String,
@SerializedName("intAwayScore")
val intAwayScore: Any,
@SerializedName("intAwayShots")
val intAwayShots: Any,
@SerializedName("intHomeScore")
val intHomeScore: Any,
@SerializedName("intHomeShots")
val intHomeShots: Any,
@SerializedName("intRound")
val intRound: String,
@SerializedName("intSpectators")
val intSpectators: Any,
@SerializedName("strAwayFormation")
val strAwayFormation: Any,
@SerializedName("strAwayGoalDetails")
val strAwayGoalDetails: String,
@SerializedName("strAwayLineupDefense")
val strAwayLineupDefense: String,
@SerializedName("strAwayLineupForward")
val strAwayLineupForward: String,
@SerializedName("strAwayLineupGoalkeeper")
val strAwayLineupGoalkeeper: String,
@SerializedName("strAwayLineupMidfield")
val strAwayLineupMidfield: String,
@SerializedName("strAwayLineupSubstitutes")
val strAwayLineupSubstitutes: String,
@SerializedName("strAwayRedCards")
val strAwayRedCards: String,
@SerializedName("strAwayTeam")
val strAwayTeam: String,
@SerializedName("strAwayYellowCards")
val strAwayYellowCards: String,
@SerializedName("strBanner")
val strBanner: Any,
@SerializedName("strCircuit")
val strCircuit: Any,
@SerializedName("strCity")
val strCity: Any,
@SerializedName("strCountry")
val strCountry: Any,
@SerializedName("strDate")
val strDate: String,
@SerializedName("strDescriptionEN")
val strDescriptionEN: Any,
@SerializedName("strEvent")
val strEvent: String,
@SerializedName("strEventAlternate")
val strEventAlternate: String,
@SerializedName("strFanart")
val strFanart: Any,
@SerializedName("strFilename")
val strFilename: String,
@SerializedName("strHomeFormation")
val strHomeFormation: Any,
@SerializedName("strHomeGoalDetails")
val strHomeGoalDetails: String,
@SerializedName("strHomeLineupDefense")
val strHomeLineupDefense: String,
@SerializedName("strHomeLineupForward")
val strHomeLineupForward: String,
@SerializedName("strHomeLineupGoalkeeper")
val strHomeLineupGoalkeeper: String,
@SerializedName("strHomeLineupMidfield")
val strHomeLineupMidfield: String,
@SerializedName("strHomeLineupSubstitutes")
val strHomeLineupSubstitutes: String,
@SerializedName("strHomeRedCards")
val strHomeRedCards: String,
@SerializedName("strHomeTeam")
val strHomeTeam: String,
@SerializedName("strHomeYellowCards")
val strHomeYellowCards: String,
@SerializedName("strLeague")
val strLeague: String,
@SerializedName("strLocked")
val strLocked: String,
@SerializedName("strMap")
val strMap: Any,
@SerializedName("strPoster")
val strPoster: Any,
@SerializedName("strResult")
val strResult: Any,
@SerializedName("strSeason")
val strSeason: String,
@SerializedName("strSport")
val strSport: String,
@SerializedName("strTVStation")
val strTVStation: Any,
@SerializedName("strThumb")
val strThumb: Any,
@SerializedName("strTime")
val strTime: String,
@SerializedName("strTimeLocal")
val strTimeLocal: String,
@SerializedName("strTweet1")
val strTweet1: Any,
@SerializedName("strTweet2")
val strTweet2: Any,
@SerializedName("strTweet3")
val strTweet3: Any,
@SerializedName("strVideo")
val strVideo: Any
) {
constructor(
idEvent: String,
strEvent: String,
strDate: String,
idHomeTeam: String,
strHomeTeam: String,
intHomeScore: Any,
idAwayTeam: String,
strAwayTeam: String,
intAwayScore: Any
) : this(idEvent, strEvent, strDate, idHomeTeam, strHomeTeam, intHomeScore, idAwayTeam, strAwayTeam, intAwayScore)
}
截图:https ://i.stack.imgur.com/riGkU.png
如何在 Kotlin Android 中为数据类创建构造函数?
我尝试创建构造函数。但是,我得到“委托调用链中有一个循环”,请更正我的代码并告诉我解决方案。. .
解决方案
对于数据类,类头中定义的构造函数是主构造函数。它不能委托给该类中的任何其他构造函数(尽管它可以委托给超类构造函数)。
但是,您可以在类的主体中定义辅助构造函数,只要将它们委托给主构造函数即可。例如:
data class EventItem(val dateEvent: String) {
constructor(date: Date) : this(date.toString())
}
您发布的代码中的问题是您的辅助构造函数正试图委托回自身。您必须改为委托给主构造函数,这意味着您需要能够确定辅助构造函数中缺少的所有参数的值。
推荐阅读
- java - 有没有办法将 java bean 添加到 javafx 场景
- javascript - Hubspot drop.js - 未捕获的 ReferenceError:未定义 Drop
- java - 我想创建一个混合器来混合我通过解析 MPEG-DASH URL 获得的音频和视频
- java - Cannot download file from mount point in Tomcat application
- angular - 有什么特别的?类型“节点”不能转换为类型“子节点”
- networking - 在 TextFSM 上从末尾匹配字符串
- android - 如何更改 viewpager 的大小以匹配屏幕而不与其他元素重叠?
- java - 使用apache POI保护/冻结xslx工作表中图像的位置和大小
- apache-spark - 如何在 Snowflake Spark 连接器中使用 Google 存储桶作为外部舞台位置?
- spring-security - Spring Security OAuth2 SSO 微服务 - 没有为 /oauth/authorize 传递标头