当前位置: 首页 > 面试题库 >

Java思考:按声明顺序获取字段和方法

楚翰
2023-03-14
问题内容

有什么方法可以使用反射来按声明的顺序获取声明的类的字段(和方法)?根据该文件,方法和字段的顺序返回的getFields()getDeclaredFields()等不确定。

如Java反射中所建议的那样,可以使用注释来指定类似索引的内容:类字段和方法的顺序是否标准化?

有没有更好的选择,即不必手动指定索引?

现在,在您问我需要什么之前:我们有一个方法将一个很大的数据结构作为输入并对其进行冗长的计算。为了创建单元测试,我们制作了一个方法,该方法采用一个输入对象和一个输出实例,并创建Java源代码(设置输入,调用计算方法并随后声明正确的结果)作为输出。当以声明顺序编写字段时,此代码更具可读性。


问题答案:

对于jdk 6,反射字段按其声明顺序处理。在早期的jdk中并非如此。显然有足够多的人对此进行了n记。

尽管不受javadoc的保证,但我仍然会将此命令视为理所当然,并且我认为该命令也将保留在以后的jdks中。

在您的应用程序中,就像在大多数应用程序中一样,对声明顺序的依赖性大多是虚荣的-如果顺序变差,您的应用程序不会失败,这只会变得有些丑陋。



 类似资料:
  • 在java8中,可以访问java类的字段。朗。反思。使用例如。 在java12(从java9开始?)这只返回一个空数组。这不会改变,即使 设置。 有什么办法可以做到这一点吗?(显然,这可能不是一个好主意,我希望在junit测试期间通过反射更改代码中的“static final”字段 )

  • 这是发生在中的一种奇怪行为,下面是一个场景,一个名为Entity的类: 主要课程包括: 输出: 好的,它们是有序的,这很好,但是当您设置对某个

  • 问题内容: 在Java类上使用反射来访问所有字段,方法等:这些元素是否有标准化的顺序(在某些标准中指定)? 当然,我可以凭经验进行检查,但是我需要知道它是否始终相同。 编辑: 我等了一个问题:我需要什么命令;)长话短说:我有带JAXB注释的类,并且不想在视觉上表示这些类。尽管XML属性的顺序与XML标准或JAXB都不相关,但我想为视觉表示确定XML属性的顺序。例如:开始在结束之后。这伤害了自己的直

  • 我已经建立了一个字段声明列表,需要找出每个字段的名称: 我找不到任何检索字段名称的方法。 奇怪的是,其中一个构造函数确实接受一个字段参数,所以不确定为什么它没有getter。我需要从另一个节点获取它吗? FieldDeclaration(节点列表修饰符、类型、字符串名称)创建一个FieldDeclaration。https://www.javadoc.io/doc/com.github.javap

  • 问题内容: 在没有泛型类型的类中,我想声明一个类似于以下内容的相当复杂的泛型字段: 问题是Java编译器不会让我:) 所以我的问题是如何正确地引入T和S,而又不向类Client添加类型。 我的目标是强制成为您选择的类的子类型和作为子类。 问题答案: 你不能 唯一的选择是在类声明中声明泛型类型参数。如果您的类没有泛型类型参数,则其成员不能为泛型。您必须在类成员的声明中使用实际类型。

  • 问题内容: 我有一个用户模型和一个提交模型。每个提交都有一个上载用户的外键字段user_submitted。 我的问题很简单:如何获得提交量最多的三个用户的列表? 我尝试在用户模型上创建num_submissions方法: 然后执行: 但这失败了,就像我尝试过的所有其他尝试一样。我实际上可以使用智能数据库查询吗?还是我应该在视图文件中做些更怪异的事情? 问题答案: 你没有在示例模型代码中提及,但在