zoukankan      html  css  js  c++  java
  • Class.getResource与ClassLoader.getResource()区别

    Class.getResource是根据类的相对路径来访问资源的。如果该类没有package,则类的根路径是就是当前路径;如果该类有package,则类的根路径是定级包所在的路径。

    下面显示了一个类的包层次结构:

    +bin--

        +myjava--

               Drawing.class

        +images--

                 title.gif

    假设我们要获取title.gif对象,可以通过以下方式得到:

    1 Image img = (new ImageIcon(Drawing.class.getResource("/images/title.gif"))).getImage();
    2 Image img = (new ImageIcon(Drawing.class.getResource("../images/title.gif"))).getImage();

    从上述获取title.gif方式可知,在用Class.getResource获取资源文件时:

    1、如果你指定的路径以“/”开头,那么就是从ClassPath的起点开始寻找这个路径。

    2、如果直接以某个package名或者表示路径的符号(例如:..代表上级目录)开头,那么就是从当前package名的目录为起点开始寻找。

    所以大家如果用过hibernate就知道,有些表示类到数据库表的映射关系的xml文件就和这个类的class文件放在一起,这样它就直接使用这个类.class.getResource方法来得到这个xml文件。

    而在使用ClassLoader的getResource方法的时候,永远是以Classpath为直接起点开始寻找资源的,不用担心从什么包开始寻找的问题。

     

     

     

  • 相关阅读:
    volatile关键字
    const关键字祥解
    extern关键字祥解
    gcc和g++使用澄清
    [APIO2014]连珠线
    点名
    四轮车
    盘子序列
    序列问题
    长途旅行
  • 原文地址:https://www.cnblogs.com/loritin/p/2787612.html
Copyright © 2011-2022 走看看