Java 检查反射类型是基元类型还是对象类型
我使用下面的代码来查找反射中的类成员,这些成员是基元和一些对象,我的问题是有一种方法可以识别字段是否是类型基元、对象、类引用,因为我想根据类型调用特定的方法。 例如,if field is primitive调用handlePrimitive if field type其他类型引用(在下面的示例中为SalesOrderItemPK primaryKey;)调用handleClassReference方法等 只是为了理解,我需要获取类并对其进行Invisigate,然后根据成员类型创建数据Java 检查反射类型是基元类型还是对象类型,java,reflection,primitive-types,generic-programming,Java,Reflection,Primitive Types,Generic Programming,我使用下面的代码来查找反射中的类成员,这些成员是基元和一些对象,我的问题是有一种方法可以识别字段是否是类型基元、对象、类引用,因为我想根据类型调用特定的方法。 例如,if field is primitive调用handlePrimitive if field type其他类型引用(在下面的示例中为SalesOrderItemPK primaryKey;)调用handleClassReference方法等 只是为了理解,我需要获取类并对其进行Invisigate,然后根据成员类型创建数据 for
for (Object clsObj : listClsObj) {
Field[] declaredFields = clsObj.getClass().getDeclaredFields();
numOfEntries = 1;
do {
Object newInstance = clsObj.getClass().newInstance();
for (Field field : declaredFields) {
// Get member name & types
Class<?> fieldType = field.getType();
Type genericType = field.getGenericType();
String fieldTypeName = fieldType.getName();
String memberName = field.getName();
if (genericType instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) genericType;
for (Type typeOfReferance : pt.getActualTypeArguments()) {
String classTypeName = typeOfReferance.toString();
String[] parts = classTypeName.split(" ");
memberReferance = parts[1];
如果您不调用
.toString()
,而是将类型
强制转换为类
,您将得到.isPrimitive()
,顺便说一句,当类中有成员键入其他类时,代码将输入此行,例如:private List jobList=new ArrayList();例如,我在这段代码中发现int类型是否是基元类型,但我如何知道string类型是哪种类型呢?我没有得到这个问题,我想我可以做field.getType().isPrimitive()
,而不必对Java 1.6中的Class
进行额外的转换。
public static SwitchInputType<?> switchInput(final String typeName, final String memberName, final int cnt) {
if (typeName.equals("java.lang.String")) {
return new SwitchInputType<String>(new String(memberName + " " + cnt));
} else if (typeName.equals("char")) {
return new SwitchInputType<Character>(new Character('a'));
@Entity
public class SalesOrderItem
{
@EmbeddedId
SalesOrderItemPK primaryKey;
private String ProductId;
private String Notes;