【问题标题】:Raw stack vs. generic Stack<Character>原始堆栈与通用堆栈<Character>
【发布时间】:2013-10-13 14:25:31
【问题描述】:

这不是错误,我只是不喜欢在 Eclipse 中显示警告。

Stack is a raw type. References to generic type Stack<E> should be parameterized

我知道我可以通过将类 Character 提供为 E 来修复它,但由于我将使用 .charAt,我宁愿简单地使用 &lt;char&gt;,因为这是 charAt 返回的类型。有没有办法让我使用 char 作为参数,如果没有,我会遇到使用&lt;Character&gt; 的转换问题吗?

【问题讨论】:

  • Stack&lt;Character&gt; 有什么问题?您不能将char 作为类型参数。
  • 那么你要使用charAt() 方法在Stack 中填写什么值。您可以将 Character 类指定为 Stack 的类型参数,然后将您的 charAt 输出添加到其中。自动装箱将在内部进行,您的 char 将作为 Character 插入到您的 Stack 中,而不会大惊小怪!
  • 好的,谢谢,我真的不确定它是否会自动装箱,这是我最大的问题,谢谢!

标签: java char stack character generic-collections


【解决方案1】:

您必须使用Character 而不是char 的原因是Java 中的泛型类型参数不能是原始类型。没有办法解决这个问题。如果你想使用标准的 Java 集合框架,你只需要忍受这个。

就警告而言:

  • 它们是警告,可以被抑制。您可以在源代码中执行此操作(通过使用 @SuppressWarning 注释),或更改 Eclipse Java 编译器首选项。

  • 始终可以编写与任何原始类型用法相同的泛型等效项。

【讨论】:

    【解决方案2】:

    您不能用原始类型实例化泛型类型。详情请参阅here

    您可以使用Character 类。要获取原始数据类型,您始终可以在 Character 类中使用 charValue() 方法。

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 2011-05-04
      • 1970-01-01
      • 2014-10-25
      • 2012-01-18
      • 2021-02-18
      • 1970-01-01
      • 2014-07-21
      • 2015-07-02
      相关资源
      最近更新 更多