Eclipse正在生成一个已经存在的构造函数

时间:2014-08-13 16:25:31

标签: java eclipse

我正在使用libgdx库制作游戏。我有一个名为World的班级和一个名为WorldTile的班级。

World类中,我创建了一个新的WorldTile,Eclipse告诉我构造函数是未定义的,但确实如此。如果我采取"可能的纠正措施"要创建这样的构造函数,它会导致WorldTile中出现重复方法的错误。

World.java中的代码:

worldTile = new WorldTile(renderZone, TileImages.FLOOR_PLANK_YELLOW, TileImages.WALL_BRICK_GREEN, true);

WorldTile.java中的代码:

public WorldTile(Position renderZone, int floorType, int wallType, boolean isHidden) 
{
    this.position = renderZone;
    this.isHidden = true;
}

public WorldTile(Position renderZone, int floorPlankYellow, 
                  int wallBrickGreen, boolean b) 
{
    // TODO Auto-generated constructor stub
}

第二个构造函数是由Eclipse构造的自动生成的,以表明我实际上编写了正确的构造函数,但Eclipse声称它不存在。

根据评论中的建议,我重新启动了Eclipse,这很有用。你试过把它关掉再打开吗?感谢所有的建议。

2 个答案:

答案 0 :(得分:0)

由于两个构造函数具有相同的参数类型,因此编译器不知道要使用哪个构造函数。同一对象的不同构造函数必须具有不同的参数集。此外,如果您传入一段数据来构建对象,通常您希望实际使用该数据执行某些操作...

编辑:要快速修复,只需删除第二个构造函数。

EDIT2:因为我最近似乎误读了你的帖子......我的建议是确保你将相应的类型传递给构造函数。

答案 1 :(得分:0)

为类提供两个构造函数,参数类型必须不同。拥有两个构造函数

public MyClass(int a, int b) { // your code } along with

public MyClass(int c, int d) { // your code } 

不会工作。因为两个构造函数都需要两个整数。所以Java不知道选择哪一个。你可以为一个类设置各种构造函数,因为它们的签名(methodName和parameterList的组合)不同。

所以

MyClass(int a, int b) { // your code } along with 
MyClass(int a, int b, int c)  { // your code } 

完全没问题。明白为什么?

同样是mmitaru建议的,你通常想创建ie实例化一个对象并引用它以便你可以使用/操作它。

myObjType obj1; // declaration : obj1 should hold, so to say reference to objects of type myObjType 

new myObjType(...) // actually creates such an object (where ... are the parameters the constructors expects) 

myObjType obj1 = new myObjType(...) // declaration and initialization in a single step

obj1.aMethod() // calls the method aMethod on the object of type myObjType