java播放器代码,帮着看看,分析下!

来源:百度知道 编辑:UC知道 时间:2024/06/20 09:44:45
package JMF;
import javax.media.*;
import java.net.*;
public class SPlayer
{
public static void main(String [] args)
{
try
{
URL location = SPlayer.class.getResource("name.mp3"); //同目录下文件
MediaLocator mrl = new MediaLocator(location);
Player player = Manager.createPlayer(mrl);
player.start();
}
catch (Exception e)
{
System.out.println("Error: "+e.toString());
}
}
}
其中的URL location = SPlayer.class.getResource("name.mp3")这行代码咋理解?SPlayer.class.getResource?
我看到一楼的回答,我还是不明白,SPlayer.class这个class到底是咋回事?为什么要用这个class呢?

这是Class类中的方法,调用这个方法肯定是这个类的对象。

Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。

这个方法与Applet中的getCodeBase()有异曲同工之处吧,获得类资源的系统中的位置。
下面是API的介绍:
getResource
public URL getResource(String name)查找带有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的 class loader 实现的。此方法委托给此对象的类加载器。如果此对象通过引导类加载器加载,则此方法将委托给 ClassLoader.getSystemResource(java.lang.String)。
在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:

如果 name 以 '/' ('\u002f') 开始,则绝对资源名是 '/' 后面的 name 的一部分。
否则,绝对名具有以下形式:
modified_package_name/name
其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.' ('\u002e')。

参数:
name - 所需资源的名称
返回:
一个 URL 对象;如果找不到带有该名称的资源,则返回 null

.class文件是.java文件编译后的字节码文件,也就是我们编写的Java代码之后,使用的.class文件,可以保证Java的平台无关性。
URL location = SPlayer.class.getResource