• 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为直接起点开始寻找资源的,不用担心从什么包开始寻找的问题。

     

     

     

  • 相关阅读:
    Pandas学习笔记,如何从DataFrame里选择一个Series
    数据结构_郝斌_数组
    数据结构_郝斌_预备知识2
    数据结构_郝斌_预备知识1
    数据结构_郝斌_目录
    数据结构_郝斌_链表
    Vocabulary Recitation 2020/04/08
    5月11号
    5月10号
    5月9号
  • 原文地址:https://www.cnblogs.com/loritin/p/2787612.html
Copyright © 2020-2023  润新知