如何在 Java 的枚举中保存图像?
How to hold an image in an enum in Java?
据我了解,您基本上可以将任何类型的对象放入 enum
,这包括 BufferedImage
.
这意味着按如下方式创建 enum
应该可行:
A(0 , ImageIO.read(new File("a.png")) , "foo" , true),
B(1 , ImageIO.read(new File("b.png")) , "" , true);
问题是您必须通过这种创建 BufferedImage
.
的方式捕获任何异常
现在我的问题是:
是否可以在 enum
的声明 try/catch
中放置一个 try/catch
,或者我应该只保留文件名并在什么时候传递实际的 BufferedImage
正在请求吗?
您的枚举声明已经需要一个构造函数,您可以在其中捕获和处理所有异常。
public enum ImageEnum {
A(0 , "a.png" , "foo" , true),
B(1 , "b.png" , "" , true);
private final BufferedImage image;
private ImageEnum(.., String filename, ..) {
// first assign to tempImage to meet teh final modifier of image
BufferedImage tempImage = null;
try {
tempImage = ImageIO.read(new File(filename));
} catch (Exception e) {
tempImage = null;
}
image = tempImage;
}
}
如果你创建了一个加载图像并返回它的方法,从而捕获任何异常,并且你可以传递文件的路径,那会怎么样。所以您的代码可能如下所示:
A(0 , loadImage("a.png"), "foo" , true),
B(1 , loadImage("b.png"), "" , true);
如果你像我一样喜欢把事情分解成很多方法,这只是另一种选择。
据我了解,您基本上可以将任何类型的对象放入 enum
,这包括 BufferedImage
.
这意味着按如下方式创建 enum
应该可行:
A(0 , ImageIO.read(new File("a.png")) , "foo" , true),
B(1 , ImageIO.read(new File("b.png")) , "" , true);
问题是您必须通过这种创建 BufferedImage
.
现在我的问题是:
是否可以在 enum
的声明 try/catch
中放置一个 try/catch
,或者我应该只保留文件名并在什么时候传递实际的 BufferedImage
正在请求吗?
您的枚举声明已经需要一个构造函数,您可以在其中捕获和处理所有异常。
public enum ImageEnum {
A(0 , "a.png" , "foo" , true),
B(1 , "b.png" , "" , true);
private final BufferedImage image;
private ImageEnum(.., String filename, ..) {
// first assign to tempImage to meet teh final modifier of image
BufferedImage tempImage = null;
try {
tempImage = ImageIO.read(new File(filename));
} catch (Exception e) {
tempImage = null;
}
image = tempImage;
}
}
如果你创建了一个加载图像并返回它的方法,从而捕获任何异常,并且你可以传递文件的路径,那会怎么样。所以您的代码可能如下所示:
A(0 , loadImage("a.png"), "foo" , true),
B(1 , loadImage("b.png"), "" , true);
如果你像我一样喜欢把事情分解成很多方法,这只是另一种选择。