繁体   English   中英

如何在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方式捕获任何异常。

现在我的问题是:
是可以放置try/catch的的声明 enum ,或者我应该只是按住文件名,并通过实际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);

如果你像我一样喜欢把事情分成很多方法,这只是另一种选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM