Type aliases for Java generics

If you want full type safety, I don’t think you can do better without some kind of wrapper classes. But, why not make those classes inherit/implement the original generic versions, like this: public class FooBBQ extends Foo<Bar<Baz,Qux>> { … } This eliminates the need for toGeneric() method, and it is more clear, in my opinion, … Read more

Whats the use of saying

List<SomeObject> l; In this you cannot say List<SomeObject> l = new ArrayList<SubClassOfSomeObjectClass>;(not allowed) wheres for List<? extends SomeObject> l; you can say List<? extends SomeObject> l = new ArrayList<SubClassOfSomeObject>;(allowed) But note that in List<? extends SomeObject> l = new ArrayList<SubClassOfSomeObject>; you cannot add anything to your list l because ? represents unknown class (Except null … Read more

What is Vec?

It means “Rust compiler, infer what type goes into the Vec“. And it is indeed analogous to the unused variable in Python (and in Rust itself), in that it represents a placeholder for a type, like it can represent a placeholder for a variable name. You can find an explanation in The Rust Programming Language … Read more

Generic factory with unknown implementation classes

Since generics in Java are implemented using erasure, the type information of FruitHandlerFactory will not be available at runtime, which means you can’t instantiate A (or B) this way. You can, however pass in a Class object of the correct type to work around this: public class FruitHandlerFactory<H extends FruitHandler<F>, F extends Fruit> { final … Read more

What is the purpose of List?

It is possible that this method signature was created as a by-product of some generic class. For example, SwingWorker has two type parameters, one for final result and one for intermediate results. If you just don’t want to use any intermediate results, you pass Void as the type parameter, resulting in some methods returning Void … Read more

Jackson – Deserialize Generic class variable

You will need to build JavaType explicitly, if generic type is only dynamically available: // do NOT create new ObjectMapper per each request! final ObjectMapper mapper = new ObjectMapper(); public Json<T> void deSerialize(Class<T> clazz, InputStream json) { return mapper.readValue(json, mapper.getTypeFactory().constructParametricType(Json.class, clazz)); }

Annotation attributes with type parameters

I think it is possible, but it requires lots of additions to language spec, which is not justified. First, for you enum example, you could use Class<? extends Enum<?>> options. There is another problem in Class<? extends Enum> options: since Enum.class is a Class<Enum> which is a Class<? extends Enum>, it’s legal to options=Enum.class That … Read more

Solution for overloaded operator constraint in .NET generics

There is no immediate answer; operators are static, and cannot be expressed in constraints – and the existing primatives don’t implement any specific interface (contrast to IComparable[<T>] which can be used to emulate greater-than / less-than). However; if you just want it to work, then in .NET 3.5 there are some options… I have put … Read more