J2ME上检测是否支持特定的API
这是很久前另一个BLOG上的,现在不用了。转过来吧,方便查看...
也许熟悉Class类的朋友早就知道如何使用了,这里我只是做了一下总结,帮助有需要的朋友。
一开始这个问题是群里的一个朋友提出来的,我也不会,搜了很久才摸透了,下面就来说说,也当作资料备份(^-^)。
理论基础:
每个类都有一个相应的java.lang.Class对象。每个类的Class对象存储于编译后的类所在的文件中。所以,当JVM装载一个.class文件时就会装载一个Class对象。
思路:
判定是否支持特定API,只要检测API中(所包含的特定的)类的Class对象是否存在。
步骤:
1.获得类的Class对象。
2.判断Class对象是否存在。
1.获得类的Class对象
这有3个途径可以获得,分别是:
1)Object.getClass();
2)classname.class(如javax.microedition.lcdui.Canvas.class);
3)Class.forName(classname)(如Class.forName(java.lang.String));
我们的目的是判断是否支持特定的API,显然不可能事先得到对象实例,第1个方法不能用。第2和第3个方法都是可行的。
2.判断Class对象是否存在
对于第2种方法,判断获得的Class是否为null;
对于第3中方法,如果不存在会抛出ClassNotFoundException。
一个判断是否支持NOKIA API的例子:
方法2:
... ...
if(com.nokia.mid.ui.FullCanvas.class!=null ? true : false)
System.out.println("支持");else
System.out.println("不支持");
... ...
方法3:
public static boolean test(String classname) { try {
Class.forName(classname.trim()); return true;
} catch (ClassNotFoundException e) {
return false;
}
}
... ...
if(test("com.nokia.mid.ui.FullCanvas"))
System.out.println("支持");
else
System.out.println("不支持");
... ...
这里再附上两个相关的连接,可供参考:
测试手机支持哪些J2ME类:
http://www.myspaces.cn/userhly/archive/2008/09/11/28790.aspx
手机支持的java协议检测工具: