As you may already know, Java's generics are just compile-time checking and are not implemented in the JVM, whereas C#'s generics have type-checking implemented in both the compiler and the CLR and is more strongly-typed. However, Java's looser implementation allows the following, whereas C#'s does not:
Lets say we have a generic interface:
public interface GenericInterface<T> {
public int getSize(T t);
}
And we have interfaces that extend this interface:
public interface StringInterface extends GenericInterface<String> {
}