如何订阅两个不同的发布者

时间:2020-10-22 21:36:58

标签: java

我有一个User对象,该对象需要响应两个不同的Publisher更改:

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进行两个不同的事件,但是已不建议使用。如何使用新方法进行此操作?我是否必须创建一个同时包含LanguageTimeZone的新对象,然后创建该对象,然后测试哪个对象不为null进行处理?

1 个答案:

答案 0 :(得分:0)

我想我必须去:

 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
        } 
    }