capnproto / capnproto-java

Cap'n Proto in pure Java
Other
398 stars 86 forks source link

Generic Types #68

Open pavelrappo opened 6 years ago

pavelrappo commented 6 years ago

There's an example of a generic struct on Cap’n Proto page:

...
struct Map(Key, Value) {
  entries @0 :List(Entry);
  struct Entry {
    key @0 :Key;
    value @1 :Value;
  }
}
...

After compiling it, I cannot seem to find the corresponding

public static final Factory factory

field in the class Map. There are factories for other types mentioned in the example, but not for this one. Why is that? Does it have anything to do with generics in Java not being reifiable?

dwrensha commented 6 years ago

The factory type depends on the generic parameters. You need to specify those parameters in order to construct a factory. The generated code for your Map struct should include a Map.newFactory() function that you can use for this purpose.