What is the significant difference to Java? In C# you would write something like Foo<out Bar> instead of Foo<? extends Bar> or some such thing.
In c# you can't be generic over generic types. In java you can. Also enums can't implement interfaces.
In c# you can't be generic over generic types. In java you can. Also enums can't implement interfaces.