تفاوت companion object و object(در سطح پکیج)
سه شنبه, ۱۴ ارديبهشت ۱۴۰۰، ۰۵:۰۵ ب.ظ
توی کاتلین مفهوم استاتیک مثل جاوا وجود نداره. با این حال یه سری امکاناتی برای معرفی فیلد و متدهای استاتیک در نظر گرفته شده است.
در هر کلاسی میشه companion object تعریف کرد و داخل بلاک آن فیلدها و متدهای استاتیک تعریف کرد.
class Book(
private val name: String,
private val price: Double
) {
fun interduceBook() {
println("$name is a book with $price price")
}
companion object {
val color = "Blue"
val writer = "Alber Kamoo"
}
}
fun main() {
println(Book.writer)
println(Book.color)
val book = Book("The Stranger", 40000.0)
book.interduceBook()
}
object(در سطح پکیج)
در این حالت یک کلاس سینگلتون تعریف میشه. (به جای class از object استفاده میکنیم)
object Job {
var jobTitle : String = ""
var jobHour : Int = 0
fun decribeYourJob(){
println("my job is $jobTitle with $jobHour hours")
}
}
fun main(args: Array<String>) {
Job.jobTitle = "adnroid developer"
Job.jobHour = 8
Job.decribeYourJob()
}
هر بار این کلاس رو صدا کنیم همون نمونه ای که ساخته شده رو بهمون میده.
مقاله مدیوم در مورد dagger و فیلدهای استاتیک کلاس module در کاتلین توضیح داده
۰۰/۰۲/۱۴