Java 如何使用lambda转换源代码?

Java 如何使用lambda转换源代码?,java,android,lambda,rx-java,Java,Android,Lambda,Rx Java,我实现了下面的代码 起初还可以,但随着时间的推移和其他代码的添加,它变得混乱起来 所以我决定使用lambda 但我不知道如何使用lambda转换它。 我尝试了很多方法,但都没有成功 我如何转换它?及 如果有地方可以看到下面的相关资料,请建议我。谢谢大家! 下面是我的代码 public void SaveBeaconId(){ myCompositeDisposable.add(BeaconService.getBeaconObservable() .observe

我实现了下面的代码

起初还可以,但随着时间的推移和其他代码的添加,它变得混乱起来

所以我决定使用lambda

但我不知道如何使用lambda转换它。 我尝试了很多方法,但都没有成功

我如何转换它?及 如果有地方可以看到下面的相关资料,请建议我。谢谢大家!

下面是我的代码

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;
                        }
                    });
public void SaveBeaconId(){
myCompositeDisposable.add(beacervice.getBeaconObservable())
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribowith(新可处置观察员){
@凌驾
public void onNext(ProximityZoneContext[]ProximityZoneContext){

对于(int i=0;ilambda表达式是在Java8中添加的。要使用lambda表达式,您需要在
build.gradle
文件中执行以下操作

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
添加上述更改后,只需访问要转换为lambda的代码。您可以看到一个黄色灯泡出现。只需单击该灯泡,您将获得一个选项,该选项显示“替换为lambda”

单击它,您现在可以看到lambda表达式

参考:


希望这个答案对你有帮助。

你把你的匿名<代码>可处置的观察者< /代码>子类移动到一个命名的代码不是更容易吗?但是除了上面的代码,还有许多可观察的观察者在我的代码中使用lambdas执行不同的动作,使你的代码更少冗长,而不是更少混乱。代码行…哦..谢谢我理解。我将删除日志代码!昨天我看不到“替换为lambda”这句话,但我重新启动了AndroidStudio,它工作了!谢谢你的回复!!