آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

۴ مطلب در ارديبهشت ۱۴۰۰ ثبت شده است

توی کاتلین مفهوم استاتیک مثل جاوا وجود نداره. با این حال یه سری امکاناتی برای معرفی فیلد و متدهای استاتیک در نظر گرفته شده است.

در هر کلاسی میشه companion object تعریف کرد و داخل بلاک آن فیلدها و متدهای استاتیک تعریف کرد.

۰ نظر موافقین ۰ مخالفین ۰ ۱۴ ارديبهشت ۰۰ ، ۱۷:۰۵
میم دال

در کاتلین برای مقداردهی فیلدهایی که در ابتدای کلاس معرفی شده و قرار است در اواسط کلاس مقداردهی شوند، دو روش وجود دارد:

 

1. {...} by lazy

2. lateinit

 

{...} by lazy همون جا مقدار متغیر مشخص میشه اما به محض استفاده از آن متغیر مقداردهی می شود. حتما باید از نوع val باشه.

 

lateinit نمیتونه nullable باشه و حتما باید از نوع var باشد.

توضیحات بهتر و کامل تر

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ ارديبهشت ۰۰ ، ۰۷:۵۱
میم دال

اگر کلاس viewModel دارای آرگومان باشد، در این صورت برای instance کردن آن باید کلاس فکتوری تعریف کنیم:

class ViewModelFactory(private val num:Int): ViewModelProvider.Factory{
    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
        if(modelClass.isAssignableFrom(MyViewModel::class.java)){
            return MyViewModel(num) as T
        }
        throw IllegalArgumentException("Not Found")

    }
}

این کلاس همیشه به همین فرمت نوشته میشه.

۰ نظر موافقین ۰ مخالفین ۰ ۰۳ ارديبهشت ۰۰ ، ۰۶:۳۷
میم دال