Looking at a library called mongojack 3.0 - https://github.com/mongojack/mongojack. This library contains a file called JacksonMongoCollection.java It has a method...
public JacksonCollectionKey<TResult> getCollectionKey() {
return new JacksonCollectionKey<>(getMongoCollection().getNamespace().getDatabaseName(), getMongoCollection().getNamespace().getCollectionName(), getValueClass());
}
This returns JacksonCollectionKey<>
This library compiles fine.
I have not seen an empty generic type definition before. How does this work?
Empty generic type brackets are used where generic type can be inferred from context by compiler. In your case, compiler will insert TResult into empty brackets.