我正在尝试使用遗传学实现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的正确方法是什么? 谢谢。
答案 0 :(得分:0)
避免sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(myNewFile)));
的唯一方法是让字段保留元素的类:
@SuppressWarning
答案 1 :(得分:0)
如西尔维奥(Silvio)和安德里亚斯(Andreas)在评论中所述。
不需要将Object强制转换为T,我们只需要使用.equals()进行比较即可。
我最初的实现是使用==运算符比较对象。这是错误的,因为==用于比较引用而不是内容。