我使用外部库返回一些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)
还有更好的吗?
根据你对"JDK的对象"的定义 - 它可能会在边缘变得非常模糊 - 不,这不会这样做.该java.lang软件包只是JDK中包含的所有类的一小部分.
您可以检查每个对象是否被加载的对象ClassLoader加载java.lang.String- 即,
if (theObject.getClass().getClassLoader() == "".getClass().getClassLoader()) ...
Run Code Online (Sandbox Code Playgroud)
通常,ClassLoader系统类与应用程序类将使用不同的名称.