Как я могу конвертировать исходный код, используя лямбду? - PullRequest
1 голос
/ 02 апреля 2019

Я реализовал приведенный ниже код.

Сначала все было в порядке, но с течением времени и добавлением другого кода стало грязно.

Поэтому я решил использовать лямбду.

Но я не знаю, как конвертировать его с помощью лямбды.Я пробовал много способов, но это не сработало.

Как я могу конвертировать?И если есть место, чтобы увидеть соответствующие материалы ниже, пожалуйста, предложите мне.Спасибо!

Ниже приведен мой код

public void SaveBeaconId(){
    myCompositeDisposable.add(BeaconService.getBeaconObservable()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribeWith(new DisposableObserver<ProximityZoneContext[]>() {
                @Override
                public void onNext(ProximityZoneContext[] proximityZoneContexts) {
                    for(int i=0; i<proximityZoneContexts.length; i++) {
                        bId = proximityZoneContexts[i].getDeviceId();
                        if (!beaconList.contains(bId)) {
                            beaconList.add(bId);
                            Log.d("OnNext Beacon add: ", bId);
                            //PostFcmData(bId,FirebaseInstanceIDService.refreshedToken,"ScoreData");
                        }
                    }
                    for(int i=0; i<beaconList.size(); i++) {
                        Log.d("Beacon List "+i,beaconList.get(i));
                    }

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            })
    );
}

final MyApplication application = (MyApplication) getApplication();
    RequirementsWizardFactory
            .createEstimoteRequirementsWizard()
            .fulfillRequirements(this,
                    new Function0<Unit>() {
                        @Override
                        public Unit invoke() {
                            Log.d("app", "requirements fulfilled");
                            application.enableBeaconNotifications();
                            return null;
                        }
                    },
                    new Function1<List<? extends Requirement>, Unit>() {
                        @Override
                        public Unit invoke(List<? extends Requirement> requirements) {
                            Log.e("app", "requirements missing: " + requirements);
                            return null;
                        }
                    },
                    new Function1<Throwable, Unit>() {
                        @Override
                        public Unit invoke(Throwable throwable) {
                            Log.e("app", "requirements error: " + throwable);
                            return null;
                        }
                    });
  • Я видел в блоге, что лямбда применяется только к одному методу.Вы знаете, что это значит?

1 Ответ

2 голосов
/ 02 апреля 2019

лямбда-выражения добавляются в Java 8. Чтобы использовать лямбда-выражения, вам нужно сделать следующее в вашем build.gradle файле

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

После добавления вышеуказанных изменений просто перейдите на нужный кодконвертировать в лямбду.Вы можете увидеть желтую лампочку.Просто нажмите на это, и вы получите опцию, которая говорит «Заменить лямбда».

enter image description here

Нажмите на нее, и вы можете увидеть лямбда-выражение сейчас.

enter image description here

Ссылка: https://developer.android.com/studio/write/java8-support#configuration

Надеюсь, этот ответ поможет вам.

...