Java 关于lambda中'this'关键字的澄清 可观察的接口{ 订阅(观察员); 默认可观察过滤器(谓词fn){ 返回观察员->{ 观察者obsT=新观察者(){ @凌驾 下一页(T){ if(fn.试验(t)) 观察员:onNext(t); } @凌驾 公共作废登记员(可丢弃的t){ 观察员:onError(t); } @凌驾 未完成的公共空间(){ observer.onComplete(); } }; 返回此。订阅(obsT); }; } }

Java 关于lambda中'this'关键字的澄清 可观察的接口{ 订阅(观察员); 默认可观察过滤器(谓词fn){ 返回观察员->{ 观察者obsT=新观察者(){ @凌驾 下一页(T){ if(fn.试验(t)) 观察员:onNext(t); } @凌驾 公共作废登记员(可丢弃的t){ 观察员:onError(t); } @凌驾 未完成的公共空间(){ observer.onComplete(); } }; 返回此。订阅(obsT); }; } },java,reactive-programming,Java,Reactive Programming,此在上面的代码中指的是什么,是否有人可以帮助…它告诉当前的可观察的对象实例在处理完过滤器调用后调用自己的订阅方法,并将新的订阅作为可观察的返回 更具体地说,此是指向正在执行当前作用域的对象实例的指针。该行为定义在: 与匿名类声明中出现的代码不同,lambda正文中出现的名称和this和super关键字的含义以及引用声明的可访问性与周围上下文中的含义相同(除了lambda参数引入新名称) 在简单的英语中,这意味着此引用周围类型的当前实例。因此,在您的示例中,此引用了当前的可观察 这也意味着,如果周

在上面的代码中指的是什么,是否有人可以帮助…

它告诉当前的
可观察的
对象实例在处理完
过滤器
调用后调用自己的
订阅
方法,并将新的
订阅
作为
可观察的
返回


更具体地说,
是指向正在执行当前作用域的对象实例的指针。

该行为定义在:

与匿名类声明中出现的代码不同,lambda正文中出现的名称和
this
super
关键字的含义以及引用声明的可访问性与周围上下文中的含义相同(除了lambda参数引入新名称)

在简单的英语中,这意味着
引用周围类型的当前实例。因此,在您的示例中,
引用了当前的
可观察

这也意味着,如果周围的方法是静态的,则不能使用此:

interface Observable<T> {
    Subscription subscribe(Observer<T> observer);


    default Observable<T> filter(Predicate<T> fn) {
        return observer -> {
            Observer<T> obsT = new Observer<T>() {
                @Override
                public void onNext(T t) {
                    if (fn.test(t))
                        observer.onNext(t);
                }

                @Override
                public void onError(Throwable t) {
                    observer.onError(t);
                }

                @Override
                public void onComplete() {
                    observer.onComplete();
                }
            };
            return this.subscribe(obsT);
        };
    }
}

在给定的上下文中,
这个
指的是周围的对象,即
可观察的
-接口的当前实例。
这个
在这里的意思与它在lambda之外的意思相同,
过滤器
方法所属的对象
这个
在这里也碰巧是多余的。因为这个问题没有显示出努力。请重写您的exaplme,使其满足的要求,感谢您的清晰解释。只需重申,在下面的场景中,一些可观察的。过滤器(x->x%2==0)someObservable是否引用了
@Codershree
someObservable
引用了上次分配给
someObservable
的对象……因此,假设在这种情况下,我在过滤器后链接了一个映射操作,这意味着,由于过滤器本身返回一个可观察的对象,因此当前实例将指向由过滤器生成的可观察对象,map随后将订阅该对象,我的理解是否正确。@Codershree请避免在评论中提出新问题,并请限制自己在每篇文章中提出一个问题,否则,您可能会使现有答案无效。我不能理解你的思路。创建一个示例,我可以看一看。”…
这是一个指针…-Java中没有指针,只有引用。
import java.util.function.Supplier;

public class Sample {
  int x = 0;

  public static void main(String... args) {
    Supplier<String> function = () -> {
      return Integer.toString(this.x); // This is line 8
    };
  }
}
Sample.java:8: error: non-static variable this cannot be referenced from a static context
      return Integer.toString(this.x);
                              ^
1 error