数组实例化

时间:2014-10-31 15:44:03

标签: java arrays tiles

我有一个名为bt的瓷砖对象,以及草砖,GT和花砖等其他瓷砖。这些都是对象。

然后我将这些对象的名称放入一个数组中,以创建一个呈现给屏幕的地图。像这样:

Tile[] map = new Map{bt, bt, bt, bt,
                     gt, gt, gt, gt,
                     bt, bt, ft, ft}

现在我的问题是,我是否引用了瓷砖对象的名称?意思是,实际上只有三个瓷砖,而不是概述的12个瓷砖?如果是这样,我怎么能绕过那个?我的目标是在每个不同的磁贴上制作1个,然后让数组重复它们,每次基本上实例化一个新的磁贴。

4 个答案:

答案 0 :(得分:2)

我不打算编译我害怕。

但鉴于你的问题是

  

现在我的问题是,我是否引用了瓷砖对象的名称?意思是,实际上只有三个瓷砖,而不是概述的那个12?

当您创建类型为Tile的数组时,您将声明一组指向Tile对象的指针,而不是Tile个对象本身。这个想法是你自己经历并填充它们。当你创建一个Tile[]对象时:

Tile[] tiles = new Tile[10];

你有一个看起来像这样的数组:

tiles[0] = null;
tiles[1] = null;
...
tiles[9] = null;

然后,你经历并填充它们。

tiles[2] = new Tile();

现在阵列看起来像:

tiles[0] = null;
tiles[1] = null;
tiles[2] = Tile[Some Hex Code here]
tiles[3] = null;
...
tiles[9] = null;

因此,要回答原始问题,如果您要通过并手动实例化 12 Tile个对象,那么12会有12个指针数组中保存的不同Tile个对象。

答案 1 :(得分:0)

你可以迭代你的瓷砖并为每个瓷砖制作一个新瓷砖......

Tile[] map = new Tile[] {bt, bt, bt, bt, gt, gt, gt, gt, bt, bt, ft, ft};
ArrayList<Tile> tiles = new ArrayList<Tile>();
for (Tile tile : map) {
    tiles.add(new Tile(tile.text));
}
map = tiles.toArray(map);

答案 2 :(得分:0)

您可以创建一个抽象tile类并使用该抽象tile类创建数组, 然后应用一些循环并用子对象实例化对象即 你想要namly bt gt和ft

答案 3 :(得分:-1)

我认为您正在寻找的解决方案是

Tile[] map = new Tile[12]();//declare a tile array that can hold 12 Tile Reference



//Assign those 12 references to the Objects  


for(int i=0;i<4;i++)
{
map[i]=bt;
}

for(int i=4;i<8;i++)
{
map[i]=gt;
}

for(int i=8;i<10;i++)
{
map[i]=bt;
}
for(int i=10;i<12;i++)
{
map[i]=ft;
}