Java 是否可以将不同的子类传递给同一个PCollection?

Java 是否可以将不同的子类传递给同一个PCollection?,java,google-cloud-dataflow,apache-beam,dataflow,Java,Google Cloud Dataflow,Apache Beam,Dataflow,是否有可能在梁中有一个“容纳”同一超类的不同对象的PCollection,以便 PCollection<T extends SuperClass> result = input.apply(ParDo.of(new DoFnThatReturnsSubClasses())); } 但我的子类将包含一个附加字段,该字段具有不同数据类型的相同变量名。即 public class SubClassA extends SuperClass { List<HashMap

是否有可能在梁中有一个“容纳”同一超类的不同对象的PCollection,以便

PCollection<T extends SuperClass> result =  input.apply(ParDo.of(new DoFnThatReturnsSubClasses()));
}

但我的子类将包含一个附加字段,该字段具有不同数据类型的相同变量名。即

public class SubClassA extends SuperClass {   
    List<HashMap<String, String>> value = new ArrayList<>();       
}

我真正想要实现的是允许字段
value
具有不同的数据类型。我唯一能想到的就是把它分成不同的子类。我意识到这可能更多的是一个Java编程问题和对该语言的理解不足。

是的,这是可能的。您可以有一个包含子类X对象混合的PCollection。您需要确保用于PCollection的编码器能够对所有可能的子类进行编码和解码


您的DOFN下游将接收超类对象,您需要向下转换到相应的子类。

是的,这是可能的。您可以有一个包含子类X对象混合的PCollection。您需要确保用于PCollection的编码器能够对所有可能的子类进行编码和解码


您的DOFN下游将接收超类对象,您需要向下转换到相应的子类。

Ah ok!你能举一个这样使用编码器的例子吗?如果在同一个PCollection中捆绑在一起,您不知道哪个父类来自哪个子类,我不确定向下转换将如何工作。为了区分代码中的对象,您可以使用instanceof确定您拥有的子类。当然!我现在正在使用AvroCoder。我会调查你的建议。谢谢啊,好的!你能举一个这样使用编码器的例子吗?如果在同一个PCollection中捆绑在一起,您不知道哪个父类来自哪个子类,我不确定向下转换将如何工作。为了区分代码中的对象,您可以使用instanceof确定您拥有的子类。当然!我现在正在使用AvroCoder。我会调查你的建议。谢谢
public class SuperClass {

String key; 
Long timestamp;
public class SubClassA extends SuperClass {   
    List<HashMap<String, String>> value = new ArrayList<>();       
}
public class SubClassB extends SuperClass {   
    String value;       
}