Java 如何有选择地重置阵列';s维度?

Java 如何有选择地重置阵列';s维度?,java,arrays,bufferedimage,Java,Arrays,Bufferedimage,我有一个抽象类Sprite,它在其构造函数中为单个Sprite创建一个数组。构造函数采用精灵表的路径、精灵表类型作为枚举以及单个精灵的宽度和高度。构造函数获取精灵表的路径,将其加载到BuffereImage中,并从映像中获取单个精灵以将其加载到数组中。下面是课堂: package exosoft.Zerfall; public abstract class Sprite extends Main { BufferedImage spriteSheet = null; Buffe

我有一个抽象类
Sprite
,它在其构造函数中为单个Sprite创建一个数组。构造函数采用精灵表的路径、精灵表类型作为枚举以及单个精灵的宽度和高度。构造函数获取精灵表的路径,将其加载到BuffereImage中,并从映像中获取单个精灵以将其加载到数组中。下面是课堂:

package exosoft.Zerfall;

public abstract class Sprite extends Main {
    BufferedImage spriteSheet = null;
    BufferedImage[] sprites;
    int spriteWidth = 0;
    int spriteHeight = 0;

    public enum SheetType {
        SINGLE,
        HORIZONTAL,
        VERTICAL,
        RECTANGULAR
    }
    public Sprite(SheetType type, String sheetPath, int spriteWidth, int spriteHeight) {
        try {
            spriteSheet = ImageIO.read(new File(sheetPath));
        } catch (IOException e) {
            e.printStackTrace();
        }
        switch(type) {
        case HORIZONTAL:
            sprites = new BufferedImage[spriteSheet.getWidth() / spriteWidth];
            for (int i = 0; i < spriteSheet.getWidth() / spriteWidth; i++) {
                sprites[i] = spriteSheet.getSubimage(i * spriteWidth, 0, spriteWidth, spriteHeight);
            }
            break;
        case RECTANGULAR:
            break;
        case VERTICAL:
            sprites = new BufferedImage[spriteSheet.getHeight() / spriteHeight];
            for (int i = 0; i < spriteSheet.getHeight() / spriteHeight; i++) {
                sprites[i] = spriteSheet.getSubimage(0, i * spriteHeight, spriteWidth, spriteHeight);
            }
            break;
        default:
            break;
        }
    }
}
目标是最终得到一个名为
sprites
的数组,其中包含各个sprites,并根据需要提供尺寸。这有可能吗?谢谢。

您要做的是:

BufferedImage[][] sprites=null;

case 0-dimension: sprites=new BufferedImage[1][1];
case 1-dimension: sprites=new BufferedImage[n][1]
case 2-dimension: sprites=new BufferedImage[n][m]
然后


不,这不可能完全像你上面所做的那样。您的
精灵
成员变量必须是普通变量或数组。为什么不总是使用一个二维数组,对你不关心的维度使用1呢?它总是有效的。这确实有效,但我的目标是根据需要消除不必要的维度。你是在暗示这是不可能的吗?是的,它不可能有与无量纲和数组相同的变量-其他可能的解决方案是创建一个类,但你必须再次指定dimensionalityHmm。。。我觉得这应该是可能的,但哦,我想,我必须处理它。谢谢你的回答!
BufferedImage[][] sprites=null;

case 0-dimension: sprites=new BufferedImage[1][1];
case 1-dimension: sprites=new BufferedImage[n][1]
case 2-dimension: sprites=new BufferedImage[n][m]
case 0-dimension: sprites[0][0]=new BufferedImage(....);
case 1-dimension: for(i) sprites[i][0]=new BufferedImage()
case 2-dimension: for(i) for(j) sprites[i][j]=new BufferedImage()