我正在堆栈中实现一个列表链接。该程序成功通过了所有必需的测试,但我遇到了此警告。程序的实现没有中断,但我正在寻求消除此问题。你能告诉我如何通过编辑Equals方法中的代码来修复它吗?未选中的强制转换:“java.lang.对象”到“LinkedStack”
public final class LinkedStack<E> implements Stack<E> {
private Node head = null;
private int size = 0;
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public void clear() {
head = null;
size = 0;
}
@Override
public boolean contains(E e) {
for (int i = 0; i < size; i++) {
E temp = pop();
if (temp.equals(e)) {
return true;
}
}
return false;
}
@Override
public E top() throws StackEmptyException {
if (size == 0) {
throw new StackEmptyException();
}
return head.element;
}
@Override
public void push(E e) {
head = new Node(e, head);
size++;
}
@Override
public E pop() throws StackEmptyException {
if (size == 0) {
throw new StackEmptyException();
}
E temp = head.element;
head = head.next;
size--;
return temp;
}
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
LinkedStack<E> that = (LinkedStack<E>) o;
if (that.size() != this.size()) return false;
Node j = that.head;
int counter = 0;
for (Node i = head; counter < size; i = i.next, j = j.next) {
if (i.element == null && j.element == null) {
counter++;
continue;
}
if ((i.element != null) && (j.element != null)) {
if (!i.element.equals(j.element)) {
return false;
}
} else {
return false;
}
counter++;
}
return true;
}
@Override
public int hashCode() {
int resultat = 1;
int counter = 0;
for (Node i = head; counter < size; i = i.next) {
if (i.element == null) {
counter++;
continue;
}
resultat = resultat * i.element.hashCode();
counter++;
}
return resultat;
}
protected class Node {
private final E element;
private final Node next;
protected Node(final E element, final Node next) {
this.element = element;
this.next = next;
}
}
}
我刚刚意识到原则上可以避免显式转换到LinkedStack
至于这会造成什么不同-转换到LinkedStack
这就是“禁止未经检查的强制转换警告”的其他答案的意思,当他们说除非绝对必要,否则最好避免未经检查的强制转换。
(我有意避免对所提供代码的其余部分发表评论)
我有一个通用类。它看起来像这样: 显然,conevertdatajsonstring方法仅在字符串类型为T时调用。但有一个警告: 类型安全:未选中从字符串转换为T 有没有一种方法可以在不使用SuppressWarnings的情况下解决此问题: @抑制警告(“未选中”) 方法之前?
我在这里遇到了一个关于带列表的泛型有界类型的小问题。请帮帮我! 有什么方法可以克服这个问题,或者我可以安全地压制警告吗?
问题内容: 我正在编写一些Swift代码,其中有一个包含通用类型的数组: 稍后在我的代码中,我需要确定存储在数组中的类型。我尝试使用文档中描述的类型转换技术(尽管泛型没有使用过)。 上面的switch语句在编译时导致以下错误: 发出IR SIL功能@ _TFC19Adder_Example Mac6Matrix9transposeUS 7ElementfGS0_Q__FT_GSqGS0_Q___以
我在我的一个实用程序类中有一个方法,它接受一个集合和一个类对象,并返回一个Iterable实例,该实例可以遍历作为指定类实例的集合的所有成员。其签名为: 这对于大多数用例都非常有效,但现在我需要将其与泛型类
我正在尝试有一个通量通用转换器使用通用类型在Java 8。我把我的代码建立在这个答案的基础上。其思想基本上是实现这个特定的转换器->: 类型转换器->转换为我想要的任何类型。因此,我正在使用构造函数创建一个类型为的类,并返回一个方法。我想在调用上创建类似这样的多个条目:,但类类型不同。但它甚至对整数也不起作用。 当我使用此单元测试进行测试时,我得到错误:。
JLS 5.1.9将未检查的转换定义如下: 让G用n个类型参数命名一个泛型类型声明。 从原始类或接口类型G到形式