首页 > 解决方案 > 如何订阅两个不同的发布者

问题描述

我有一个用户对象需要响应两个不同的发布者更改:

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创建它,然后测试哪个不为空以进行处理?

标签: java

解决方案


我想我将不得不去:

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

推荐阅读