加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中未选中的Cast警告?

发布时间:2020-12-14 19:35:13 所属栏目: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 = null;}} 现在我的疑问是,我在
在这段代码中,我在 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;

而且你不会那样得到警告.

然而,我的蜘蛛意识告诉我那里存在一些建筑问题.由于您没有向我们展示您的所有代码,因此我们无法为您提供任何帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读