英文:
how I create objects of the given object type in a method with different constructors
问题
我的问题:我想在一个方法中创建对象,该方法接收我想要创建的对象以及我想要创建多少个对象。而且每个对象在构造函数中都会接收不同的参数。
public void addTiles(int x, int y, int rows, int columns, Object tile){
for(int i=0; i<rows; i++){
for(int j=0; j<columns; j++){
// 尝试
// add(new Class<tile.getClass()>(x+j*64,y+i*64));
// add(tile.getClass().newInstance().setLocation(x+j*64,y+i*64));
// add(((GameTile)tile.clone()).setLocation(x+j*64,y+i*64));
}
}
}
英文:
My problem: I want to create objects in a method that receives the object I want to create and how many I want. Also each one receives different arguments in the constructor
public void addTiles(int x, int y, int rows, int columns, Object tile){
for(int i=0; i<rows; i++){
for(int j=0; j<columns; j++){
//Attempts
//add(new Class<tile.getClass()>(x+j*64,y+i*64));
//add(tile.getClass().newInstance().setLocation(x+j*64,y+i*64));
//add(((GameTile)tile.clone()).setLocation(x+j*64,y+i*64));
}
}
}
答案1
得分: 0
在抽象类 Tile 中,我写了这个:
public abstract GameTile getNewTile(int x, int y);
在我的具体瓷砖类中:
@Override
public Tile getNewTile(int x, int y) {
return new Floor(x, y); //如果瓷砖是地板
}
当我想要创建地板瓷砖时:
addTiles(0, 0, 12, 20, new Floor(0, 0));
我的方法看起来像这样:
public void addTiles(int x, int y, int rows, int columns, Tile tile) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
add(tile.getNewTile(x + j * tile.getWidth(), y + i * tile.getHeight()));
}
}
}
如果你能找到不需要创建这个抽象方法的解决方案,请写下来,谢谢!
英文:
In the abstract class Tile i write this:
public abstract GameTile getNewTile(int x, int y);
In my tiles:
@Override
public Tile getNewTile(int x, int y) {
return new Floor(x, y); //if the tile is floor
}
When i want to create Floor tiles:
addTiles(0, 0, 12, 20, new Floor(0, 0));
where my method looks like:
public void addTiles(int x, int y, int filas, int columnas, Tile tile){
for(int i=0; i<filas; i++){
for(int j=0; j<columnas; j++){
add(tile.getNewTile(x+j*tile.getWidth(),y+i*tile.getHeight()));
}
}
}
If you find a solution without creating this abstract method write it down please. Thanks !
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论