this.getClass().getClassLoader().getResource("").getPath() 这里可能出现 NPE 吗?
this.getClass().getClassLoader().getResource("").getPath() is NPE possible here?
我收到代码审查评论,下面一行可以 return NPE
this.getClass().getClassLoader().getResource("").getPath()
因为我指的是自己class,我有机会得到NPE
吗?
我发现 this answer 说如果我加载外部文件则有 NPE
的可能性,对吗?
我使用下面的代码来避免NPE
Paths.get("").toAbsolutePath().normalize().toString()
是的,从评论来看这个 JavaDoc 很有帮助。
https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String)
getResource
public URL getResource(String name)
Finds the resource with the given name. A resource is some data (images, audio, text, etc) that can be accessed by class code in a way that is independent of the location of the code.
The name of a resource is a '/'-separated path name that identifies the resource.
This method will first search the parent class loader for the resource; if the parent is null the path of the class loader built-in to the virtual machine is searched. That failing, this method will invoke findResource(String) to find the resource.
Parameters:
name - The resource name
Returns:
A URL object for reading the resource, or null if the resource could not be found or the invoker doesn't have adequate privileges to get the resource.
Since:
1.1
我收到代码审查评论,下面一行可以 return NPE
this.getClass().getClassLoader().getResource("").getPath()
因为我指的是自己class,我有机会得到NPE
吗?
我发现 this answer 说如果我加载外部文件则有 NPE
的可能性,对吗?
我使用下面的代码来避免NPE
Paths.get("").toAbsolutePath().normalize().toString()
是的,从评论来看这个 JavaDoc 很有帮助。
https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String)
getResource
public URL getResource(String name)
Finds the resource with the given name. A resource is some data (images, audio, text, etc) that can be accessed by class code in a way that is independent of the location of the code.
The name of a resource is a '/'-separated path name that identifies the resource.
This method will first search the parent class loader for the resource; if the parent is null the path of the class loader built-in to the virtual machine is searched. That failing, this method will invoke findResource(String) to find the resource.
Parameters:
name - The resource name
Returns:
A URL object for reading the resource, or null if the resource could not be found or the invoker doesn't have adequate privileges to get the resource.
Since:
1.1