我确实理解创建桥接方法的需要,例如期望传递参数的setter方法,但是getter方法呢?为什么Java也会产生桥方法呢?
以下是ChatGPT生成的一个虚拟代码,目的是让事情变得更具体:
class Box<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
class StringBox extends Box<String> {
public void setValue(String value) {
System.out.println("Setting a String value in StringBox");
super.setValue(value.toString());
}
public String getValue() {
System.out.println("Getting String value from StringBox");
return super.getValue();
}
}
擦除后的Box类将具有以下方法:
public Object getValue();
个
在StringBox类中,我们定义了方法:
public String getValue()
但这两个方法具有相同的签名,并且覆盖方法的返回类型使用字符串作为返回类型,它是Object类(协变返回类型)的子类
因此,覆盖似乎已经完成.为什么需要桥接法?
我遗漏了什么?