如何让其他类可以全局访问图像?

时间:2015-05-09 05:01:20

标签: java image ioexception

我有几个图像,如下面我的程序中使用的图像。我决定将所有图像移到单独的图像类中以保持程序整洁,但现在我遇到未处理的 IOException错误。

通过编码Images.fileName,我可以引用File,但它要求该文件为static,当我将其更改为static时,我遇到了IOException

final BufferedImage identity = ImageIO.read(new File("Images/Identity.jpg"));

我有很多String变量,可以很容易地从其他类访问。没有任何问题,我甚至不必用className.varName作为序言。

有没有办法解决这个问题?或者最好是更好的方法吗?

1 个答案:

答案 0 :(得分:1)

JB Nizet在评论中说的完全正确:

  

你正在以错误的方式处理这个问题。你的问题了   与图像无关。你的问题是你不明白   与未处理的异常相关的编译器错误消息。所以看了   错误消息,尝试理解它,谷歌它,阅读教程   关于Java中的异常   (docs.oracle.com/javase/tutorial/essential/exceptions),并修复你的   码。并且,如果你真的卡住了,那么发布没有的代码   编译以及完整且准确的错误消息。但是   教程应该让你理解你的代码无法编译的原因

您的问题在于,您急切地初始化字段而不会捕获可能导致的IOException。解决此问题的方法很简单:使用静态初始化程序块:

public class MyImages {
    public static final BufferedImage identity;

    static {
       try {
           identity = ImageIO.read(new File("Images/Identity.jpg"));
       } catch (IOException e) {
           // couldn't read the image...
           // do something about it or stop the program or whatever
       }
    }
    // the other stuff of your class
}