如何检查类是否属于Java JDK

yve*_*lem 3 java reflection

我使用外部库返回一些List<?>.我需要检查此列表的每个对象是否是JDK的对象(String,int,Integer ...).这是一个合适的解决方案?

List<?> list = externalLibrary.search(...);
for(clazz : list) {
    if (clazz.getPackage().getName().startsWith("java.lang"))
      // do something different
}
Run Code Online (Sandbox Code Playgroud)

还有更好的吗?

Ern*_*ill 5

根据你对"JDK的对象"的定义 - 它可能会在边缘变得非常模糊 - 不,这不会这样做.该java.lang软件包只是JDK中包含的所有类的一小部分.

您可以检查每个对象是否被加载的对象ClassLoader加载java.lang.String- 即,

if (theObject.getClass().getClassLoader() == "".getClass().getClassLoader()) ...
Run Code Online (Sandbox Code Playgroud)

通常,ClassLoader系统类与应用程序类将使用不同的名称.