Java 错误:类型的未定义方法<;界面>;

Java 错误:类型的未定义方法<;界面>;,java,interface,Java,Interface,我正在使用Repast Symphony实现一个多代理模拟。我犯了以下错误,我相信这与就餐平台无关。下面是: 我有一个界面: public interface Located { public int getX(); public int getY(); } 我还有两个实现它的类: public class Carrier implements Located{ public int getX(){..} public int getY(){..} } public clas

我正在使用Repast Symphony实现一个多代理模拟。我犯了以下错误,我相信这与就餐平台无关。下面是:

我有一个界面:

public interface Located {
  public int getX();
  public int getY();
}
我还有两个实现它的类:

public class Carrier implements Located{
  public int getX(){..}
  public int getY(){..} }

public class Gold implements Located{
  public int getX(){..}
  public int getY(){..} }
我还有一个类LocateAdder,它实现了另一个内置接口:

public class LocateAdder<Located> implements GridAdder<Located> {


@Override
public void add(Grid<Located> destination, Located object) 
{
// TODO Auto-generated method stub
destination.moveTo(object, object.getX(), object.getY());

}
                                                                 }
公共类LocateAdder实现GridAdder{
@凌驾
公共void添加(网格目标,定位对象)
{
//TODO自动生成的方法存根
destination.moveTo(object,object.getX(),object.getY());
}
}
我甚至不能编译代码。我在getX和getY下面看到一条红线,上面写着“对于所定位的类型,getX()方法未定义”。我不知道为什么会发生这种情况,因为很明显接口具有这两个方法的特征。任何人都能看出发生了什么事?提前感谢您的帮助:)

更改

public class LocateAdder<Located> implements GridAdder<Located> {
公共类LocateAdder实现GridAdder{

public类LocateAdder实现GridAdder{
在第一个示例中,您声明了一个名为
Located
的新类型变量,它隐藏了名为
Located
的类型

public class LocateAdder<Located> implements GridAdder<Located> {
公共类LocateAdder实现GridAdder{

public类LocateAdder实现GridAdder{

在第一个示例中,您声明了一个名为
Located
的新类型变量,它隐藏了名为
Located

的类型。这解决了此错误,但我在代码的其他地方遇到了一个错误。我在另一个类构造函数中使用了类LocateAdder的对象作为参数,并且需要使用该类型对其进行参数化,我猜是这样的。还有其他建议吗?@Fonah如果
LocateAdder
需要是泛型的,请使用不同的名称声明一个类型参数,以免对
Located
的名称造成阴影。让我解释一下我试图实现的目标。在Repast中,当我定义代理所在的网格时,我需要确定adder是定义在网格中添加代理的位置(即位置)的类。只有随机内置加法器可以将代理添加到网格中的随机位置。在我的模型中,我需要将代理添加到网格中的预定位置,因此我认为我可以实现我的加法器。为此,我创建了位于的接口,并使我的两个代理Carrier和Gold实现它。然后我创建了加法器类w这应该是..tbc当我创建加法器类时,它应该对两个代理都有效,所以我通过在所定位的接口上参数化它使它成为泛型的。因此,类LocateAdder必须是泛型的,而不是类型Locate。这就是为什么我认为你的建议在我的情况下不起作用。不确定是否有其他方法可以做同样的事情。还有其他建议吗手势?非常感谢你的帮助help@Fonah我不会对设计发表评论。在程序员或Codereview站点(stack exchange网络的一部分),您可能会得到更好的帮助。关键是要理解上面两行代码在做什么。如果
LocateAdder
是类型为
Located
GridAdder
,那么正确的建模方法是使用第二个选项。第一个选项没有
LocateAdder
的概念。它相当于
公共类LocateAdder实现了GridAdderr
。这解决了这个错误,但我在代码中的其他地方遇到了一个错误。我在另一个类构造函数中使用了LocateAdder类的一个对象作为参数,在那里我需要用类型对其进行参数化,所以我猜应该是在那里。还有其他建议吗?@Fonah如果
LocateAdder
需要是泛型的,请声明一个类型参数使用不同的名称,以避免阴影位于的名称。让我解释一下我试图实现的目标。在Repast中,当我定义代理所在的网格时,我需要确定adder,它是一个类,定义代理在网格中的添加位置(即位置)。只有随机内置加法器可以将代理添加到网格中的随机位置。在我的模型中,我需要将代理添加到网格中的预定位置,因此我认为我可以实现我的加法器。为此,我创建了位于的接口,并使我的两个代理Carrier和Gold实现它。然后我创建了加法器类w这应该是..tbc当我创建加法器类时,它应该对两个代理都有效,所以我通过在所定位的接口上参数化它使它成为泛型的。因此,类LocateAdder必须是泛型的,而不是类型Locate。这就是为什么我认为你的建议在我的情况下不起作用。不确定是否有其他方法可以做同样的事情。还有其他建议吗手势?非常感谢你的帮助help@Fonah我不会对设计发表评论。在程序员或Codereview站点(stack exchange网络的一部分),您可能会得到更好的帮助。关键是要理解上面两行代码在做什么。如果
LocateAdder
是类型为
Located
GridAdder
,那么正确的建模方法是使用第二个选项。第一个选项没有
LocateAdder
的概念。它相当于
公共类LocateAdder实现了GridAdderr