Java 如何分割发出两种类型列表的可观察对象?

Java 如何分割发出两种类型列表的可观察对象?,java,rx-java,Java,Rx Java,我有一个发出列表的可观察项,但它只满足不同类型的发出项。由于这两个对象都是不同类型的列表,所以该解决方案没有多大帮助。我也找不到任何东西来确定列表的类型(不使用反射) 有什么想法吗?处理这个问题的一种方法是查看列表的第一个元素(如果它是非空的)。这样,您就可以确定列表的类型了: if (list1.get(0) instanceof A) { // list1 is of type A // list2 is of type B } else { // list1 is

我有一个发出
列表的可观察项,但它只满足不同类型的发出项。由于这两个对象都是不同类型的列表,所以该解决方案没有多大帮助。我也找不到任何东西来确定列表的类型(不使用反射)


有什么想法吗?

处理这个问题的一种方法是查看
列表的第一个元素(如果它是非空的)。这样,您就可以确定
列表的类型了:

if (list1.get(0) instanceof A) {
    // list1 is of type A
    // list2 is of type B
} else {
    // list1 is of type B
    // list2 is of type A
}

可观察到的回报类型是什么?A和B是否从同一个类继承?也许还有另一种解决办法。请提供一些代码。A和B不是从同一个类继承的。可观察对象是用
Observable创建的。只是(List,List)
你能改变可观察对象的创建方式吗?似乎您最好的选择是将这些列表包装在对象中,以便在运行时保留有关其类型的更多信息。@noppa是的,这就是我最后要做的。我将observable分为两部分,每个部分都发出自己的列表,将其推送到逻辑中,然后通过zip将这两个列表组合起来(因为我仍然需要两个列表同时用于另一个调用)。然而,根据最初的问题,我可以得出这样的结论:在一个可观察的列表中列出两个列表,并希望对它们中的每一个都做些什么,这是令人头痛的。谢谢。是的,我以前也想过。不是最干净的,覆盖诸如空列表之类的情况会使它更不干净。然而,这是迄今为止唯一可行的解决方案。谢谢,不客气,是的,类型擦除使得在运行时处理泛型非常困难。