Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在具有不同构造函数的方法中创建给定对象类型的对象_Java_Object_Methods_Builder - Fatal编程技术网

Java 如何在具有不同构造函数的方法中创建给定对象类型的对象

Java 如何在具有不同构造函数的方法中创建给定对象类型的对象,java,object,methods,builder,Java,Object,Methods,Builder,我的问题是:我想在一个方法中创建对象,该方法接收我想要创建的对象以及我想要的数量。此外,每个函数在构造函数中接收不同的参数 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

我的问题是:我想在一个方法中创建对象,该方法接收我想要创建的对象以及我想要的数量。此外,每个函数在构造函数中接收不同的参数

    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));
            }
        }
    }
public void addTiles(int x、int y、int行、int列、对象tile){

对于(inti=0;i在抽象类Tile中,我写下:

public abstract GameTile getNewTile(int x, int y);
在我的瓷砖中:

@Override
public Tile getNewTile(int x, int y) {
    return new Floor(x, y); //if the tile is floor
}
当我要创建地砖时:

addTiles(0, 0, 12, 20, new Floor(0, 0));
我的方法如下所示:

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()));
        }
    }
}
public void addTiles(int x、int y、int filas、int columns、Tile Tile){

对于(inti=0;i在抽象类Tile中,我写下:

public abstract GameTile getNewTile(int x, int y);
在我的瓷砖中:

@Override
public Tile getNewTile(int x, int y) {
    return new Floor(x, y); //if the tile is floor
}
当我要创建地砖时:

addTiles(0, 0, 12, 20, new Floor(0, 0));
我的方法如下所示:

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()));
        }
    }
}
public void addTiles(int x、int y、int filas、int columns、Tile Tile){

for(int i=0;iBuilder模式将帮助您解决此问题,避免伸缩构造函数或多个构造函数。Joshua Bloch的Quaoting Effective Java:“传统上,程序员使用伸缩构造函数模式,在这种模式中,您只提供一个具有所需参数的构造函数,另一个提供一个可选参数,第三个提供两个可选参数,依此类推,最终生成一个具有所有可选参数的构造函数。“有关有效Java中的构建器模式的更多信息,请访问Stackoverflow:构建器模式将帮助您解决避免伸缩构造函数或多个构造函数的问题。Joshua Bloch的Quaoting Effective Java:“传统上,程序员使用伸缩构造函数模式,在这种模式中,您只提供一个具有所需参数的构造函数,另一个提供一个可选参数,第三个提供两个可选参数,依此类推,最终生成一个具有所有可选参数的构造函数。“有关有效Java中生成器模式的更多信息,请访问Stackoverflow: