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

如何在order Reflection API中获取方法的返回类型

戚翼
2023-03-14

当我从数组字段[]中获得值时,一切正常

 List<String> valuesToInsert = new ArrayList<>();
    Field[] field = entity.getClass().getDeclaredFields();
    for (Field field1 : field) {
        field1.setAccessible(true);
        try {
            Object value = field1.get(entity);
            valuesToInsert.add(value.toString());
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
    valuesToInsert.remove(0);
    System.out.println("Values to insert : " + valuesToInsert);

我总是按照传递的顺序得到值。

结果为常量:要插入的值:[1,Ivan,Petrov]

        Method[] methods = entity.getClass().getDeclaredMethods();
    List<String> returnTypes = new ArrayList<>();
    for (Method method : methods) {

        if (method.getName().startsWith(GET_PREFIX) || method.getName().startsWith(IS_PREFIX)) {
            returnTypes.add(String.valueOf(method.getReturnType()));
        }
    }
    returnTypes.remove(0);
    System.out.println("RETURN TYPES  : " + returnTypes);

但是我总是按照不同的顺序来做,我怎么能按照我想要的顺序来做呢?

共有1个答案

堵宪
2023-03-14

根据文档,getfields()getmethods()都提到以下内容:

返回的数组中的元素没有排序,也没有任何特定的顺序。

因此,您无法保证返回数组中字段方法的顺序。如果顺序对你很重要,或者你只是想要一个恒定的顺序,你就得自己排序。在您的示例中,使用列表保存字段值和方法返回类型。一个解决方案是使用Treeset,这样无论您获得的字段[]方法[]数组的顺序如何,集合的顺序都始终相同。

 类似资料:
  • 问题内容: 谁能帮助我在JAVA中找到方法的返回类型。我试过了 但不幸的是,它不起作用。请指导我。 输出: 不是int :: int 问题答案: 方法返回 你可以试试:

  • 我创建了一个父类Repo,它具有用于在列表中插入、删除、显示和删除对象的方法。回购是一个泛型类。我为Repo创建了一个子类(如DepartmentRepo类)和pass Department、Employee等。上课。我想对传递到Repo类的任何类对象执行插入、删除、显示和删除操作。我需要获得方法“get”的返回值,它来自Java中的泛型类。我只能从泛型中获得方法名这里我提到了代码文件

  • 问题内容: 背景 我曾经写过这种方法: 应该这样称呼它: 这很好用(尽管我在研究当前容易出错的问题时在这里的答案中已经看到)。 目前的情况 无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中): 目的是可以这样称呼: 我的评估方法中的代码显然不起作用。的第二个参数应该是Class对象。这导致我: 我的问题 如何获得通用(返回)类型的

  • 现在我希望以泛型的方式使用这些类。 如何从方法“method1”和“method2”返回泛型类型(可以是猫或狗)。我有几个返回“T extends Animal”的方法,所以最好在方法级别或类级别中声明泛型类型。

  • 问题内容: 我使用反射将包中的每个方法都获取了,然后根据每个方法的返回类型,我想执行一些操作。但不幸的是,我在收藏方面遇到了问题。当我找到一种方法来返回诸如List之类的集合时,我找不到找到有关List元素类型的方法。我使用下面的代码来获取方法的返回类型。 上面的代码运行良好,并获得了所有返回List的方法,但它只是将java.util.List作为返回类型返回,而我找不到找到了解该List中元素

  • 本文向大家介绍android getActivity.findViewById获取ListView 返回NULL的方法,包括了android getActivity.findViewById获取ListView 返回NULL的方法的使用技巧和注意事项,需要的朋友参考一下 在控件ID正确的情况下,检查是否在实例化布局文件之后,获取LISTVIEW, 先inflate找layout下布局文件,并实例化