理解“ImageIO.read(getClass()。getResource(path))”

时间:2014-01-02 20:46:15

标签: java javax.imageio

我的问题是关于以下代码示例:

    public class BufferedImageLoader {

        private BufferedImage image;

        public BufferedImage loadImage(String path) throws IOException {

            image = ImageIO.read(getClass().getResource(path));
            return image;

        }

    }

我查看了Java-API并在ImageIO类中找到了3种不同的read()方法:

1 .: 读(文件输入)

2:read(ImageInputStream stream)

3:读取(InputStream输入)

4:读取(URL输入)

我的问题是:在这个例子中使用了哪四种方法? 我有点困惑,因为在示例中代表

read(getClass().getResource(path));

“getClass()”在这里返回“BufferedImageLoader”,对吗? 然后我们调用方法“read(getClass()。getResource(path))”,它必须位于BufferedImageLoader类中,但事实并非如此!

我哪里错了?

3 个答案:

答案 0 :(得分:3)

getClass().getResource(path))会返回URL,因此在这种情况下,它会使用ImageIO.read(URL)

此外,如果您使用Class#getResourceAsInputStream,则会返回InputStream,这意味着它将使用ImageIO.read(InputStream)而不是

答案 1 :(得分:0)

getClass()会返回java.lang.Class的类型实例,在您的情况Class<? extends BufferedImageLoader>中代表BufferedImageLoader类。此方法继承自java.lang.Object并返回对象的运行时类 java.lang.Class {{1}}方法返回getResource(path)

的实例

答案 2 :(得分:0)

<Script = "JavaScript">
alert("Hello");
</Script>
警报('所选项目已成功删除')