Java中未选中的Cast警告?
发布时间:2020-05-28 06:40:54 所属栏目:Java 来源:互联网
导读:在这段代码中,我在 java中实现了一个通用链表. public class LLItem extends ComparableItem { 我的Node类被定义为 private class Node{private Item data;private Node next;public Node(Item data){ this.data = data; next
|
在这段代码中,我在 java中实现了一个通用链表. public class LL<Item extends Comparable<Item>> {
我的Node类被定义为 private class Node{
private Item data;
private Node next;
public Node(Item data){
this.data = data;
next = null;
}
}
现在我的疑问是,我在编码时不断收到警告 Node x = head,y = (Node) b.head; Type safety: Unchecked cast from LL.Node to LL<Item>.Node 我应该忽略这一点,为什么编译器会生成它.它有解决方法吗? 编辑: b是LL类型,函数签名看起来像 public void mergeAlternate(LL b){
head是LL类的私有实例变量 private Node head; 解决方法如果您正在创建一个通用实现,那么它也应该是内部通用的.您缺少Node类的type参数.它应该像这样通用: private class Node<T extends Comparable<T>> {
private T data;
private Node<T> next;
public Node(T data){
this.data = data;
next = null;
}
}
在使用该课程的地方,你可以这样做: 新节点< Item> // … 你的代码看起来像这样: Node<Item> x = head,y = b.head; 而且你不会那样得到警告. 然而,我的蜘蛛意识告诉我那里存在一些建筑问题.由于您没有向我们展示您的所有代码,因此我们无法为您提供任何帮助. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
