关于Class类与Classloader类的getResource方法获取路径的问题!

public class GuiCamera{

}


GuiCamera.class.getClassLoader().getResource("img\\demo1.jpg"));
GuiCamera.class.getResource("img\\demo1.jpg"));

这两个获取的路径是不同的,能解释一下么!

我刚在JDK中找到了答案哦!
Class类的getResource方法
GuiCamera.getClass.getResource("/name")
会从GuiCamera类的根目录上去找资源!
而GuiCamera.getClass.getResource("name")
会从GuiCamera的类所在路径里去找资源!即 包名+name!


ClassLoader类的getResource方法

而GuiCamera.getClass.getResource("name")
会从GuiCamera类的根目录上去找资源!

GuiCamera.getClass.getResource("/name")
会从什么地方找起,我还不是很清楚!望补充!


理解Java的本质就知道,Java都是由一个个ClassLoader组成的大小叠加容器。

两者差别就是getClassLoader,表示获得当前场景的ClassLoader,而没有getClassLoader,则表示当前class这个对象,和ClassLoader无关。

如果你的类被加载到一个个ClassLoader中,使用getClassLoader比较好些。

这些东西我也一直弄不清楚,一直用经验主义来做基于偶合编程,像刚摆弄hibernate的时候我不知道那个cfg放在哪,于是复制了几份一样内容的分别放在各个目录里,肯定是好用的,再一个个删除试着看,总归找到是哪一个在起作用,于是以后都照着来。