当前位置: 首页 > 知识库问答 >
问题:

如何在泛型类型转换中删除未选中的转换警告

池庆
2023-03-14

我正在堆栈中实现一个列表链接。该程序成功通过了所有必需的测试,但我遇到了此警告。程序的实现没有中断,但我正在寻求消除此问题。你能告诉我如何通过编辑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;
    }
}


}

共有1个答案

葛安和
2023-03-14

我刚刚意识到原则上可以避免显式转换到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到形式