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->{…})?如消息所述:您不能同时订阅两种不同的内容。最干净的解决方案是每个订阅都有一个单独的类,并且可能还有第三个要监视的类。