访问JShell中的“父作用域”

时间:2017-09-14 08:55:09

标签: java java-9 jshell

看来,在另一个Observable.from(listMovie) .flatMap(new Func1<Movie, Observable<FavMovieRes>>() { @Override public Observable<FavMovieRes> call(Movie movie) { return moviesAPI.makeMovieFav(String.valueOf(SharedPreferenceDataManager.getUserId(SyncFavListPeriodicTask.this)), SharedPreferenceDataManager.getSessionId(SyncFavListPeriodicTask.this), new MakeMovieFav("movie", movie.getId(), movie.isFavList())); } }).subscribe(new Subscriber<FavMovieRes>() { @Override public void onCompleted() { } @Override public void onError(Throwable e,Movie movie) {//or MakeMovieFav makeMovieFav } @Override public void onNext(FavMovieRes favMovieRes,Movie movie) {//or MakeMovieFav makeMovieFav } }); 内创建的JShell对象无法访问父级JShell范围。例如:

JShell

以某种方式可以让父范围对孩子可见吗?

1 个答案:

答案 0 :(得分:7)

根据this,关于JShell的一个重要警告是:它在自己的 JVM中运行。

create()的javadoc说:

  

相当于JShell.builder()。build()。

当您关注build()的javadoc时,您会发现:

  

构建JShell状态引擎。这是所有JShell功能的入口点。这会创建一个远程进程来执行。因此,关闭返回的实例非常重要。

换句话说:您很可能正在创建另一个 JVM实例,其他shell运行。所以至少现在:没有机会让孩子 jshell知道它的父母。

(如:我非常希望Java的这个REPL特性将来允许将JShell附加到已经运行的JVM上)