gpt4 book ai didi

java - 对类型删除和桥接方法感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:11 25 4
gpt4 key购买 nike

Java™ 教程 https://docs.oracle.com/javase/tutorial/java/generics/bridgeMethods.html显示一个示例:

public class Node<T> {

public T data;

public Node(T data) { this.data = data; }

public void setData(T data) {
System.out.println("Node.setData");
this.data = data;
}
}

public class MyNode extends Node<Integer> {
public MyNode(Integer data) { super(data); }

public void setData(Integer data) {
System.out.println("MyNode.setData");
super.setData(data);
}
}

类型删除后,Node 和 MyNode 类变为:

public class Node {

public Object data;

public Node(Object data) { this.data = data; }

public void setData(Object data) {
System.out.println("Node.setData");
this.data = data;
}
}

public class MyNode extends Node {

public MyNode(Integer data) { super(data); }

public void setData(Integer data) {
System.out.println("MyNode.setData");
super.setData(data);
}
}

类型删除后,Node 方法变为 setData(Object)MyNode 方法变为 setData(Integer)

为什么MyNode方法没有变成setData(Object)?为什么Integer不会被删除?

最佳答案

Why does the MyNode method not become setData(Object)? Why does "Integer" not be erased?

MyNodesetData 定义为:

public void setData(Integer data)

即它没有泛型类型参数。因此,没有什么可以删除的。 data 参数仍然是 Integer

关于java - 对类型删除和桥接方法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com