未选中的投射警告:将对象投射为通用

时间:2019-05-28 04:59:56

标签: java object generics linked-list

我正在尝试使用遗传学实现DoublyLinkedList。 根据{{​​3}},remove()方法的参数必须是一个对象。

如果我尝试将Object o转换为T数据,则会收到警告:未选中的Cast:'Java.lang.Object'为'T'。

public boolean remove(Object o) {
        T data = (T) o; // warning here
...
}

为避免这种情况,我必须通过“ @SuppressWarning(” Unchecked“)”来抑制警告

@SuppressWarnings("unchecked")
public boolean remove(Object o) {
        T data = (T) o;
...
}

我的理解是每个T都是一个对象,但并非每个Object都是一个T。这就是为什么它显示警告。

但是如果当我使用DoublyLinkedList类时,我100%确定Object参数是T,有没有办法避免警告或@suppresswarning是这里的唯一选择?

如果我的假设不正确,将对象转换为T的正确方法是什么? 谢谢。

2 个答案:

答案 0 :(得分:0)

避免sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(myNewFile))); 的唯一方法是让字段保留元素的类:

@SuppressWarning

答案 1 :(得分:0)

如西尔维奥(Silvio)和安德里亚斯(Andreas)在评论中所述。

不需要将Object强制转换为T,我们只需要使用.equals()进行比较即可。

我最初的实现是使用==运算符比较对象。这是错误的,因为==用于比较引用而不是内容。