簡體   English   中英

什么是更干凈,更優雅的初始化所有這些方法的方式?

[英]What is a cleaner, more elegant way to initialize all of these?

我將所有這些命名為一個。 有沒有占用更少空間的方法?

public class Matt{
    PImage matt, 
    imgLS1, imgLS2, imgLS3, imgRS1, imgRS2, imgRS3,
    imgLSB1, imgLSB2, imgLSB3, imgRSB1, imgRSB2, imgRSB3,
    imgLW1, imgLW2, imgLW3, imgRW1, imgRW2, imgRW3,
    imgLWB1, imgLWB2, imgLWB3, imgRWB1, imgRWB2, imgRWB3;
    public Matt(){    
        imgLS1  = loadImage("./Images/Matt/MattLS1.png");
        imgLS2  = loadImage("./Images/Matt/MattLS2.png");
        imgLS3  = loadImage("./Images/Matt/MattLS3.png");
        imgRS1  = loadImage("./Images/Matt/MattRS1.png");
        imgRS2  = loadImage("./Images/Matt/MattRS2.png");
        imgRS3  = loadImage("./Images/Matt/MattRS3.png");
        imgLSB1 = loadImage("./Images/Matt/MattLSB1.png");
        imgLSB2 = loadImage("./Images/Matt/MattLSB2.png");
        imgLSB3 = loadImage("./Images/Matt/MattLSB3.png");
        imgRSB1 = loadImage("./Images/Matt/MattRSB1.png");
        imgRSB2 = loadImage("./Images/Matt/MattRSB2.png");
        imgRSB3 = loadImage("./Images/Matt/MattRSB3.png");
        imgLW1  = loadImage("./Images/Matt/MattLW1.png");
        imgLW2  = loadImage("./Images/Matt/MattLW2.png");
        imgLW3  = loadImage("./Images/Matt/MattLW3.png");
        imgRW1  = loadImage("./Images/Matt/MattRW1.png");
        imgRW2  = loadImage("./Images/Matt/MattRW2.png");
        imgRW3  = loadImage("./Images/Matt/MattRW3.png");
        imgLWB1 = loadImage("./Images/Matt/MattLWB1.png");
        imgLWB2 = loadImage("./Images/Matt/MattLWB2.png");
        imgLWB3 = loadImage("./Images/Matt/MattLWB3.png");
        imgRWB1 = loadImage("./Images/Matt/MattRWB1.png");
        imgRWB2 = loadImage("./Images/Matt/MattRWB2.png");
        imgRWB3 = loadImage("./Images/Matt/MattRWB3.png");
    }
}

將圖像放在Map<String,PImage> ,按圖像后綴組織地圖。 就訪問圖像而言,此方法可能比直接使用變量稍微不方便/高效,但是它將為您節省很多空間:

static final String[] suffixes = new String[] {"LS1", "LS2", "LS3", ..., "RWB3"};
Map<String,PImage> images = new HashMap<String,PImage>();
public Matt() {
    for (String suffix : suffixes) {
        PImage image = loadImage("./Images/Matt/Matt"+suffix+".png");
        images.put(suffix, image);
    }
}

由於“ LS”等似乎具有語義含義,因此我建議使用@dasblinkenlight通過使用enum解決方案的一種變體:

final int N_FILES = 3; // files/position -- could also be a variable
enum Position {
    LS, RS, LSB, RSB, LW, RW, LWB, LRB
}

Map<Position, String[]> files = new EnumMap<>(Position.class);
for (Position pos : Position.values()) {
    String[] posFiles = new String[N_FILES];
    files.put(pos, posFiles);
    for (int i = 1; i <= N_FILES; ++i) {
        posFiles[i-1] = "./Images/Matt/Matt" + pos.name() + i + ".png";
    }
}

然后,您可以使用以下代碼訪問任何元素:

Position p = RS; // or any other value
int index = 0; // 0..(N_FILES-1), corresponding to suffixes 1..N_FILES
String fileName = files.get(p)[i];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM