java - 如何订阅两个不同的发布者
问题描述
我有一个用户对象需要响应两个不同的发布者更改:
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)
{
}
但是我收到一个错误:The interface Subscriber cannot be implemented more than once with different arguments: Flow.Subscriber<TimeZone> and Flow.Subscriber<Language>
。
两个不同的事件是可能的Observe
,但已被弃用。我如何使用新方法做到这一点?我是否必须创建一个包含两者的新对象,Language
然后TimeZone
创建它,然后测试哪个不为空以进行处理?
解决方案
我想我将不得不去:
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
}
}
推荐阅读
- c# - Cannot access the file because it is being used by another process in VS
- javascript - Angular - 自动更新数据而不刷新页面
- hibernate - 使用非主键的 JPA 映射。两个表中的列名也不同
- java - 连接 kinesis 生产者 AWS kinesis 443 时出错
- python - Threading in GTK3 python
- sql - 计算第一行的 SUM 和零总重复项
- qml - QML hack/fiddle 获得触发状态变化的东西
- python - Calculating kurtosis by hand vs. numerical integration
- php - CodeIgniter - 如何调用控制器并从库中获取返回值
- botframework - How to send private message in Microsoft Teams using bot on behalf of user in Teams?