今更ながらRxJavaをやろうと思い立ち検索...
Gradle で RxJava を動かす、ObserverパターンとHelloWorldからはじめるRxJava見つけた!
わかりやすい!できそう!ということで挑戦しました
(RxJavaやGradleの詳しいことは上の記事を参考にお願いいたします)
gradleの作成
Groovy
というPackageをいれると入力の補完をしてくれるので楽チンです!
build.gradle
apply plugin: 'java'
apply plugin: 'application'
mainClassName=project.main.capitalize()
repositories {
mavenCentral()
}
sourceSets {
main.java.srcDirs += './'
}
dependencies {
compile 'io.reactivex:rxjava:1.1.0'
}
defaultTasks 'run'
SublimeTextでBuild設定
まず、SublimeTextにビルド環境入れよう
ということで、SublimeTextのメニューからTools -> Build System -> new Build System...
にアクセスします
RxJava-gradle.sublime-build
{
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": ["source.java"],
"shell_cmd": "gradle -Pmain=\"${file_base_name}\""
}
これをRxJava-gradle.sublime-build
というタイトルで保存します
保存先はPackages/User/
です
Tools -> Build System
にRxJava-gradle
ができてると思いますので選択します
RxJava
helloObserver.java
import rx.Observable;
import rx.Observer;
class HelloObserver {
public static void main(String[] args) {
String[] names = {"in", "", "taro"};
Observable.from(names).subscribe(new Observer<String>() {
@Override
public void onNext(String name) {
if (name.isEmpty()) {
throw new RuntimeException("empty");
}
System.out.println("Hello" + name);
}
@Override
public void onCompleted() {
System.out.println("Good Bye");
}
@Override
public void onError(Throwable e) {
System.out.println("ERROR: " + e);
}
});
}
}
お試しなので、コードがほとんど参考記事の方のままです。すみません。
実行
command+b
またはcommand+shift+b
で実行です
結果
:processResources UP-TO-DATE
:classes
:run
Helloin
ERROR: java.lang.RuntimeException: empty
BUILD SUCCESSFUL
Total time: 0.817 secs
[Finished in 1.3s]
1人目のinさんもでてるし、空はerrorでてるしいい感じ!
追記
RxJavaは考え方から難しそうなので、もう少し勉強して、RxKotlinにもチャレンジします....