The four methods:
public Class<?> Func(Class<?> cls) //1
public Class<?> Func(Class cls) //2
public Class Func(Class<?> cls) //3
public Class Func(Class cls) //4
I found that:
1) 4 can override 3
2) 3 can't override 4.
3) But 2 and 4 can override each other.
Why?
This is may not about type conversion, since Class and Class<> can be converted to each other. This is more about why the compiler prevent (2) but allows (1) and (3).