当前位置: 首页 > 知识库问答 >
问题:

如果类型是基元或类型是对象,则签入反射

艾鹭洋
2023-03-14

我使用下面的代码来查找反射中的类成员是原语和某个对象,我的问题是有一种方法来识别字段是否是类型原语、对象、类引用,因为我想根据类型调用特定的方法。例如,如果field是原语,则调用HandleErimition,如果field是其他类型引用(在下面的示例中是SalesOrderItemPK,PrimaryKey;),则调用方法handleClassReferance等

只是为了理解,我需要获得类,并对其进行无菌化,并根据成员类型创建数据...

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];

这里我想调用特定的方法,可以根据数据类型来处理字段

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'));

例如,类应该像这样,我需要知道primaryKey键来创建对象。

@Entity
public class SalesOrderItem 
{
    @EmbeddedId
    SalesOrderItemPK primaryKey; 
    private String ProductId;
    private String Notes;

共有1个答案

公冶光亮
2023-03-14

如果不调用.ToString(),而是将type强制转换为class,则得到.isimplition()

 类似资料:
  • JPA存储过程参数注释 https://docs.oracle.com/javaee/7/api/javax/persistence/StoredProcedureParameter.html 根据文档,它的类型是JDBC类型。 它应该是Java类型,因为它是类(不是 java.sql.Types.xxx 或JDBCType)?

  • 我有这样的代码 现在,为了打印值,如果T是一个类,我想调用对象的打印函数,但是如果T是一个基本数据类型,我只想使用printf。 那么,如何确定模板类型是基本数据类型还是类?

  • 我有一个从数组中检索元素的方法,我想对几个基元类型(int[]、double[]、...)使用相同的方法。方法如下: 但是,如何获取数据的类型以使用适当的基元类型实例化selectedElements数组? 非常感谢

  • 问题内容: 我对Python 3中的和类有些困惑。也许有人可以消除我的困惑或提供一些其他信息。 我目前的理解是,每个类(除外)都从称为的基类继承。但是每个类(包括)也是该类的一个实例,它是自身的实例,并且也从继承。 我的问题是: 是否有一个原因/设计决策,为什么是的实例并从中继承?对象的/ class是否也可以是对象本身? 类()如何成为其自身的实例? 哪一个是真正的基类或? 我一直认为这将是最“

  • 本文向大家介绍js对象类型,基本对象类型以及引用对象类型的区别?相关面试题,主要包含被问及js对象类型,基本对象类型以及引用对象类型的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 分为基本对象类型和引用对象类型 基本数据类型:按值访问,可操作保存在变量中的实际的值。基本类型值指的是简单的数据段。基本数据类型有这六种:undefined、null、string、number、bool

  • 我有以下代码来返回对象数组,对象数组中填充了基元类型的结构元素,我不知道如何将基元类型转换为jobject,然后使用SetObjectArrayElement方法设置为ObjectArray, 下面是我的C结构信息 我的JNI代码 写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited” 包含更多信息的错误报告文件保存为:/data1