Never mind. I fixed it
```java
@Union({First.class,Second.class})
public static class Rank {
}
public static class Meta {
List<Rank> ranks ;
}
```
On 2020/03/22 03:04:21, Andy Le <[email protected]> wrote:
> Hi guys,
>
> Avro spec allows us to have an array of unions. Would you please tell me how
> to construct such schemas using reflection?
>
> 1. For classes
>
> It's easy
>
> ```java
> public class Human extends Kind {
> String name = "Andy";
> ArrayList<Human> friends = new ArrayList<>();
> }
>
> public class Machine extends Kind {
> String name = "BB-8";
> }
>
> @Union({ Human.class, Machine.class })
> public class Kind extends Object {
>
> }
> public class Meta {
> @Nullable
> List<Kind> kinds;
> }
> public void testDefaults() {
> Schema schema = ReflectData
> .get()
> .getSchema(Meta.class);
> System.out.println(schema.toString(true));
> }
> ```
>
> 2. For enums
>
> I'm stuck because enums can be derived.
>
> I think we should have an annotation named as @Items. For example:
>
> ```java
> enum First{}
>
> enum Second{}
>
> public class Meta {
> @Items(Human.class, Machine.class)
> List<Object> kinds;
>
> @Items(First.class, Second.class)
> List<Object> ranks;
> }
> ``
>
> Please let me know what you think about this suggestion.
>
> Thank you in advance.
>
>