如何在一个方法中使用不同的构造函数创建给定对象类型的对象。

huangapple go评论78阅读模式
英文:

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&lt;rows; i++){
            for(int j=0; j&lt;columns; j++){
                //Attempts
                //add(new Class&lt;tile.getClass()&gt;(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&lt;filas; i++){
        for(int j=0; j&lt;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 !

huangapple
  • 本文由 发表于 2020年8月30日 01:41:36
  • 转载请务必保留本文链接:https://go.coder-hub.com/63649988.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定