این قطعه کد rxJava چطور کار میکنه ؟
سلام دوستان، درحال یادگیری rxJava هستم که به مواردی بر خوردم که نمیدونم این کد نویسی جاوا یعنی چی و چطور داره کار میکنه، لطفا دوستان راهنمایی کنید :
این قطعه کد مربوط به دریافت جیسون از سرور است که با رتروفیت کار میکنه :
private void loadJSON() {
RequestInterface requestInterface = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build().create(RequestInterface.class);
mCompositeDisposable.add(requestInterface.register()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(this::handleResponse,this::handleError));
}
خط آخر برام نامفهومه :
this::handleResponse
اون چهار نقطه چ کاری و انجام میده؟ که معادل همین خط و میشه به این صورت هم نوشت :
response -> handleResponse(response)
یعنی سوالم اینه که اون چهار نقطه و این فلش <- چ کاری و انجام میدن و چطوری ورودی متد و بدون اینکه ما پر کنیم پر میشه ؟
ممنون
با سلام ... Method Reference و Lambda رو مطالعه کنید.
خط اخر this::handleResponse,this::handleError هر دو تابع هستن که به اون تابع فرستاده شده اند. و به ازای هر ورودی که هر دو اون تابع ها در تابع subscribe صدا زده میشن (بهر طریقی که نوشته شده است)
بعد علامت فلش هم مربوط به لامبدا هست
lambda expression در جاوا 8 اضافه شده است و با استفاده از آن می توان یک تابع (function) با پارامتر های ورودی و بدنه تابع تعریف کرد. lambda expression ها باعث میشن که از Anonymous Inner Class ها استفاده نکنیم یا در عوض این نوع کلاس ها استفاده میشن.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .