Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建主题_Java_Rx Java_Subject_Reactivex_Subject Observer - Fatal编程技术网

Java 创建主题

Java 创建主题,java,rx-java,subject,reactivex,subject-observer,Java,Rx Java,Subject,Reactivex,Subject Observer,我正在实现一个字节消息反序列化器,它将在dispatcher接口上分派反序列化消息,并返回所有抛出的Throwables的可观察值,以便客户端代码能够处理错误 该方法的原型草图: Observable<Throwable> dispatchDeserializedMessages(Observable<byte[]>, Dispatcher) Observable dispatch反序列化消息(Observable,Dispatcher) 现在,从最近开始,我熟悉主题

我正在实现一个字节消息反序列化器,它将在dispatcher接口上分派反序列化消息,并返回所有抛出的
Throwable
s的可观察值,以便客户端代码能够处理错误

该方法的原型草图:

Observable<Throwable> dispatchDeserializedMessages(Observable<byte[]>, Dispatcher)
Observable dispatch反序列化消息(Observable,Dispatcher)
现在,从最近开始,我熟悉
主题
,这将非常适合这里,例如

Subject<byte[], Throwable> dispatchDeserializedMessages(Dispatcher)
主题Dispatch反序列化消息(Dispatcher)
但是没有像
create()
这样方便的方法可以轻松地委托给观察者和被观察者。所有具体的实现都将
T
R
统一起来,所以我不可能使用其中的一个


所以我的具体问题是:有没有一种方法可以实例化一个合适的
主题
,它委托给
观察者
可观察者
?我是否有其他方法可以创建这样一个
主题
,而不必实现整个
主题
可观察的
观察者

切换到基于主题的API可能不是最好的主意,因为您将潜在的冷API更改为强制的热API。在您的原始设计中,
可丢弃的
序列的使用者在订阅时会假设,
可观察的
也会被订阅


否则,我有一个关于创建
主题的方法,但你不能避免繁重的工作。

你会发现把你的
字节[]
包装在一个类中有好处吗,可能是名为
反序列化消息
之类的?不太可能,我会称之为缺点。如果我理解正确,您建议将解码步骤外包到从
字节[]
块生成
反序列化消息的方法中。我现在更愿意使用双/访问者编码(调用dispatcher上的
onTypeOfMessage()
),因为它解决了us.YMMV表达式问题所需的部分(类型安全的可扩展工具),但我讨厌传递基元类型,因为它似乎总是会发生变化,当你面对一个长期的工业项目时,你可能是对的,但这只是一个实现IETF RFC的家庭作业。
byte[]
直接来自套接字的
InputStream
,我怀疑这在接下来的两个月内会发生变化:)。哦,家庭作业——是的,最简单、最快的书面解决方案是最好的:)