在Java ME平台中,不同厂商的不同型号的手机,都会在标准MIDP和CLDC应用程序开发接口的基础上,有不同的功能扩展。例如,某些诺基亚S40平台第二版的手机具有JSR-75扩展包,有些手机就没有;而MOTO品牌手机在早期有自己的文件扩展API,而在比较新的手机型号中就支持了JSR-75扩展。在这种情况下,如果可以在代码中动态检测某个功能类或者功能包的存在,那么可以缓解我们在发布产品中很多不必要的麻烦,不仅加快了部署和发布的速度,而且可以让用户不必再在根据自己手机型号选择手机客户端,避免了许许多多的困惑。
示例代码如下:
boolean MMAPIAvailable;try {
// 尝试将类的名称写在字符串中,进行类的对象实例化操作
// 这样一来,在编译程序的时候该类并不需要在SDK中出现,也可以编译通过
Class.forName("javax.microedition.media.Player").newInstance())
// 如果在运行时,前面的字符串中的类是存在的,那么下面的代码就会被执行
MMAPIAvailable = true;
} catch ( ClassNotFoundException e {
MMAPIAvailable = false;