gpt4 book ai didi

java - 在Java中,有什么方法可以判断一个类是否是一个简单的 'Java'类?

转载 作者:行者123 更新时间:2023-12-02 07:38:32 24 4
gpt4 key购买 nike

我使用反射来读取我创建的一些类对象,并使用递归来跟踪整个对象树。

我遇到的问题是,当我有一个“字段”时,我需要知道它是一个简单属性还是另一个复杂对象。前者可以立即处理,但后者我需要深入研究并再次调用递归方法。我的代码是这样的:

recurse(Object o) {
Class clazz = o.getClass();
for (Field f : clazz.getDeclaredFields() ) {
fieldClass = f.getType();

// Heres the broken part
if ( !ClassUtils.isPrimitiveOrWrapper(fieldClass) ) {
recurse(f.get(o));
}
else {
// Process simple attribute
}
}
}

我认为这会起作用,但后来我发现 String 不是 'PrimitiveOrWrapper'...然后我发现 Date 也不是...然后我发现 BigDecimal 也不是...

真的没有类或实用程序包可以处理这个请求吗?我只想知道一个类是内部/ native /普通/简单/基本Java类还是我编写的复杂对象。这应该不难。

我相信我的选择是:

  1. 尝试和错误将它们全部单独列出 - 希望两年将来我不会添加我未使用过的类型的另一个属性之前(恶心!)
  2. 查看类名是否以字符串 java. 开头(双讨厌!)

请告诉我我在某个地方错过了一个不错的实用程序类/方法。

最佳答案

没有任何一个 API 调用可以告诉您该对象是否是内部对象。

但是您可以使用以下方法:

isPrimitive
isArray
getPackage

第一个相当简单。第二个 isArray 是必需的,因为有一个特殊的方法将返回数组的组件类型。最后getPackage可以用来回答这个问题:这个对象是否属于JDK家族。所有公共(public) Java API 包均以 java.javax. 开头,私有(private) Java API 均以 sun. 开头。

关于java - 在Java中,有什么方法可以判断一个类是否是一个简单的 'Java'类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com