2011-04-09 105 views
0

有没有办法从java环境中找出这个类型是否是原生的?isJavaType(Class class)or isUserType(Class class)?

+0

JavaType和UserType有什么区别? Sun/Oracle开发并打包的一种类型?如果你能够给出一个明确的区分,那么应该可以通过权衡来做到这一点。 – 2011-04-09 13:25:54

+0

是的。我的意思是JVM附带的Java类。 – CelinHC 2011-04-09 15:20:50

回答

3

没有100%的把握,没有。您可以测试包名是否以“java”开头,但在大多数环境中很容易被欺骗。在一些JVM中,您可以测试类的类加载器是否为空;系统类将为空。

+2

+1 - 对'null'类加载器的测试实际上是在测试类加载器是否是“引导类加载器”。您可以在引导类路径上运行带有额外JAR的JVM ......但是这有效地使这些JAR文件中的类成为系统类。 – 2011-04-09 14:24:43

+0

java,javax,org.omg,org.xml,org.w3c和org.ietf根据我的Javadocs。对于快速解决方案来说,它可能没有问题,但对于未来或抵御恶意行为并不安全。 :) – 2011-04-09 15:44:37

+0

非常感谢。此代码适用于我的应用程序:public boolean isUserType(Class clazz){return clazz.getClassLoader()== null?假:真; } – CelinHC 2011-04-09 16:15:10