这个通用构造函数需要什么才能工作?

时间:2017-02-24 18:26:42

标签: java generics

所以我试图用通用类和接口制作一个迷宫,我不太确定我哪里出错了。我的主要问题是如何完成我的构造函数,因为它是第一次将类作为参数。

这是我的第一篇文章,所以如果不好,我道歉。

import java.awt.Color;

public class Labyrinth implements ILabyrinth {
    private int height;
    private int width;

    **********************************************
    public Labyrinth(IGrid<LabyrinthTile> tiles){
        tiles.copy();
        this.height=height;
        this.width=width;       <---Here?
    **********************************************  

    }

    @Override
    public LabyrinthTile getCell(int x, int y) {

        return getCell(x,y);
    }

    @Override
    public Color getColor(int x, int y) {

        return getCell(x,y).getColor();
    }

    @Override
    public int getHeight() {

        return height;
    }

    @Override
    public int getPlayerGold() {

        return 0;
    }

    @Override
    public int getPlayerHitPoints() {

        return 0;
    }

    @Override
    public int getWidth() {

        return width;
    }

    @Override
    public boolean isPlaying() {

        return true;
    }

    @Override
    public void movePlayer(Direction dir) throws MovePlayerException {

        if(dir.equals(Direction.EAST)){
            width+=1;
        }
        if(dir.equals(Direction.NORTH)){
            height+=1;
        }
        if(dir.equals(Direction.SOUTH)){
            height-=1;
        }
        if(dir.equals(Direction.WEST)){
            width-=1;
        }


    }

    @Override
    public boolean playerCanGo(Direction d) {
        if(d.equals(LabyrinthTile.WALL))
            return false;
        return true;

    }
}   

1 个答案:

答案 0 :(得分:1)

键入以下内容时:

this.height = height; 

你说你要设置&#34;身高&#34;您尝试创建一个名为&#34; height的变量的新对象的字段。&#34;但是你的构造函数没有名为&#34; height&#34;的变量。构造函数中的任何位置或作为构造函数的参数之一。您需要以下内容:

// .height() might not be a real method, it's just an example 
this.height = tiles.height(); 

这样可行,因为你有一个名为&#34; tiles&#34;的变量。传递给构造函数。