【问题标题】:The method *****is undefined for the type***** in JavaJava 中的类型 ***** 的方法 ***** 未定义
【发布时间】:2015-10-16 15:37:25
【问题描述】:

我正在尝试从另一个包中的抽象类 Sprite 调用方法,但我得到“方法 getSymbol() 未定义 Sprite 类型”

这是代码。

这是另一个包精灵的代码

我猜问题是抽象类的方法不能被实例化。

但我不知道如何解决。

【问题讨论】:

  • this.grid = (Sprite[][]) new Object[numRows][numColumns]; -- 你不能仅仅通过投射对象就神奇地把它们变成精灵。

标签: java abstract-class


【解决方案1】:

这就是问题所在:

public class ArrayGrid<Sprite> implements Grid<Sprite>

您声明类的方式,Sprite 是类型参数的名称。你已经把它变成了一个通用类,我怀疑你不是故意的。在该类中,Sprite 指的是类型参数,而不是类型 - 所以你可以有一个实现 Grid&lt;String&gt;ArrayGrid&lt;String&gt;...此时你将拥有一个字符串数组而不是精灵数组,所以难怪getSymbol() 不起作用,就像问题的一个症状。

我怀疑你只是想要:

public class ArrayGrid implements Grid<Sprite>

此时,Sprite 真正指的是类型。这意味着您可以避免使用不适用于数组的代码,而只需编写:

this.grid = new Sprite[numRows][numColumns];

那么没有必要抑制警告:)

【讨论】:

  • 不幸的是,我们需要有类 ArrayGrid,还有其他方法可以解决这个问题吗?
  • @Mingyu:你应该问问让你这么做的人为什么他们想要将类型参数命名为与类相同。
猜你喜欢
  • 2016-06-07
  • 1970-01-01
  • 2013-08-28
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
  • 2021-07-16
  • 2020-02-03
相关资源
最近更新 更多