The following code compiles and runs without error.
SoftReference<String> ref = new SoftReference(new Integer(1));
Object o = ref.get();
System.out.println(o); // prints "1"
A raw instance of SoftReference
is created. "Raw" means that there is no generic type checking, which is required to allow to mix generics with pre-generics code.
By making the diamond operator implicit, you would break it.