Middle+
Kas kasutas oma arendus kogemuses inline klasse?
sobes.tech AI
Vastus AI-lt
Jah, kasutan. Inline-klasid (või väärtus-klasid Kotlin 1.5+ versioonis) kasutatakse:
- Tüüpide turvalisuse parandamiseks ilma lisakuludeta: võimaldavad luua "ümbriseid" primitiivsetele tüüpidele või teistele klassidele, andes neile spetsiifilise tähenduse, näiteks mõõtühikud, kasutaja ID jne. Kotlin'i kompilaator asendab inline-klassi näite selle põhiliigiga, vältides tarbetute objektide loomist.
näide:
// Inline-klassi määratlus
@JvmInline
value class UserId(val id: String)
fun findUser(id: UserId) {
// Kasutaja otsimise loogika
}
fun main() {
val userId = UserId("12345")
findUser(userId) // Turvaline, oodatakse UserId
// findUser("12345") // Kompilatsiooniviga, oodatakse UserId, saadakse String
}
-
Eesmärkide selgem kodeerimine: näitab selgelt, millist tüüpi andmeid oodatakse või tagastatakse, suurendades koodi loetavust ja hooldatavust.
-
Lisandobjektide loomise minimeerimine primitiivsete tüüpidega töötades: võimaldab kasutada inline-klassis määratletud meetodeid ja omadusi ilma objekti loomata.
@JvmInline
value class Password(private val s: String) {
val length: Int
get() = s.length
fun isValid(): Boolean = s.length >= 8
}
fun processPassword(password: Password) {
if (password.isValid()) {
// Kehtiv parool
}
}
fun main() {
val userPassword = Password("SecurePassword")
processPassword(userPassword)
println(userPassword.length) // Ilma objekti loomata
}
Inline-klassi kasutamine aitab parandada tüüpide turvalisust ja jõudlust, eriti korduvate andmetüüpidega töötamisel, millel on erinev semantiline tähendus.