Java 如何订阅两个不同的出版商
我有一个用户对象,它需要响应两个不同的发布者更改:Java 如何订阅两个不同的出版商,java,Java,我有一个用户对象,它需要响应两个不同的发布者更改: public class User implements Subscriber<Language>, Subscriber<TimeZone> { public User() { super(); Languages.getInstance().subscribe( this ); TimeZones.getInstance().subscribe( t
public class User implements Subscriber<Language>, Subscriber<TimeZone>
{
public User()
{
super();
Languages.getInstance().subscribe( this );
TimeZones.getInstance().subscribe( this );
}
}
@Override
public void onNext( Language language )
{
}
@Override
public void onNext( TimeZone timezone)
{
}
公共类用户实现订阅服务器,订阅服务器
{
公共用户()
{
超级();
Languages.getInstance().subscribe(此);
TimeZones.getInstance().subscribe(此);
}
}
@凌驾
public void onNext(语言)
{
}
@凌驾
public void onNext(时区时区)
{
}
但是我得到一个错误:接口订阅服务器不能使用不同的参数实现多次:Flow.Subscriber和Flow.Subscriber
可以观察两个不同的事件,但这已被弃用。我如何使用新的方法来实现这一点?我是否必须创建一个既包含
语言
又包含时区
的新对象,然后创建该对象,然后测试哪一个对象在处理时不为空?我想我必须:
public class SubscribeContainer
{
private Object ivObject;
public SubscribeContainer( Object object )
{
ivObject = object;
}
public Object getObject()
{
return ivObject;
}
}
然后
@Override
public void onNext( SubscribeContainer container )
{
Object object = container.getObject();
if (object instanceof TimeZone)
{
TimeZone newZone = (TimeZone) object;
// and so on
}
}
我想我得走了:
public class SubscribeContainer
{
private Object ivObject;
public SubscribeContainer( Object object )
{
ivObject = object;
}
public Object getObject()
{
return ivObject;
}
}
然后
@Override
public void onNext( SubscribeContainer container )
{
Object object = container.getObject();
if (object instanceof TimeZone)
{
TimeZone newZone = (TimeZone) object;
// and so on
}
}
你能用lambda表达式订阅观测值吗?类似于
subscribe(lang->{…})代码>?如消息所述:您不能同时订阅两种不同的内容。最干净的解决方案是每个订阅都有一个单独的类,可能还有第三个要监视的类?类似于subscribe(lang->{…})代码>?如消息所述:您不能同时订阅两种不同的内容。最干净的解决方案是每个订阅都有一个单独的类,并且可能还有第三个要监视的类。