1 回答

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
在一個(gè)運(yùn)算符和另一個(gè)運(yùn)算符之間,您只能發(fā)出一種對(duì)象類型。在您的情況下,您正在發(fā)出一個(gè)布爾值,但您還希望能夠訪問(wèn) Entity 對(duì)象。解決方案是將兩個(gè)值(實(shí)體對(duì)象和布爾值)包裝在一個(gè)類中并發(fā)出該類。
創(chuàng)建一個(gè)類來(lái)包裝 Entity 的發(fā)射和 setBlobProperty 的結(jié)果。
? ? class Pair {
? ? ? ? private final Entity entity;
? ? ? ? private final boolean success;
? ? ? ? private Pair(Entity entity, boolean success) {
? ? ? ? ? ? this.entity = entity;
? ? ? ? ? ? this.success = success;
? ? ? ? }
? ? ? ? public Entity getEntity() {
? ? ? ? ? ? return entity;
? ? ? ? }
? ? ? ? public boolean isSuccess() {
? ? ? ? ? ? return success;
? ? ? ? }
? ? }
然后更改您的代碼以發(fā)出該類:
public void testGetBlob() throws RequestException {
? ? TestData.getNewApplication().flatMap(testApplication -> {
// ...
? ? ? ? return entity.create();
? ? }).flatMap(entity ->?
? ? ? ? entity.setBlobProperty("text", "Hello world!".getBytes("UTF-8"))
? ? ? ? ? ? // 1. Flat map the setBlobProperty call and emit a Pair with the entity and result
? ? ? ? ? ? .flatMap(isSuccess -> Single.just(new Pair(entity, isSuccess)))
? ? )
? ? ? ? ? ? .flatMap(pair -> {
? ? ? ? ? ? ? ? if(pair.isSuccess()) {
? ? ? ? ? ? ? ? ? ? // 2. entity is available here via pair.getEntity()
? ? ? ? ? ? ? ? ? ? return Single.just(isSuccess);
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? return Single.just(false);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }).subscribe(success -> {
// ...
? ? }
}
Ps:不要?jiǎng)?chuàng)建自己的 Pair 類,而是檢查此線程中的選項(xiàng)之一。如果您使用的是 Kotlin,則有一個(gè)Pair類。
添加回答
舉報(bào)