我遇到了有趣的事情(在Java和C#中都一样).Java代码:
public class TestStuff {
public static void main(String[] args) {
Printer p = new PrinterImpl();
p.genericPrint(new B());
}
}
class PrinterImpl implements Printer {
void print(A a) {
System.out.println("a");
}
void print(B b) {
System.out.println("b");
}
@Override
public <T extends A> void genericPrint(T b) {
print(b);
}
}
interface Printer {
public <T extends A> void genericPrint(T a);
}
class A {
}
class B extends A{
}
Run Code Online (Sandbox Code Playgroud)
C#代码:
namespace TestStuff
{
internal class Program
{
private static void …Run Code Online (Sandbox Code Playgroud)