访问Lambda方法之外的本地Lambda变量

时间:2018-02-08 14:55:26

标签: java android lambda

我正在编写的应用程序使用两个单独的lambda方法,以便从两个不同的传感器(每个传感器一个lambda)流式传输数据。每个传感器都会传输一个角度,我需要计算两者之间的绝对值。

简化版:

  sensorFusion1.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
    //streaming data as a variable
    EulerAngles angle1 = data.value(EulerAngles.class)
    }

    sensorFusion2.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
    //streaming data as a variable
    EulerAngles angle2 = data.value(EulerAngles.class)
    }

    // Computations Between angle1 and angle 2 here (placeholder)
       absangle= abs(angle1-angle2);

我遇到的问题是,根据我的理解,本地lambda变量需要有效最终,我的传感器数据不断变化。有没有办法可以实时访问传感器的当前值,以便在两个角度变量从传感器传递时进行计算?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

创建将保持角度的原子引用

AtomicReference<EulerAngles> angle1 = new AtomicReference<>();
AtomicReference<EulerAngles> angle2 = new AtomicReference<>();

sensorFusion1.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
    //streaming data as a variable
    angle1.set(data.value(EulerAngles.class));
}

sensorFusion2.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
    //streaming data as a variable
    angle2.set(data.value(EulerAngles.class));
}

absangle = abs(angle1 - angle2);

不要忘记检查angle1.get()angle2.get()为空