Java 是否可以以排序方式获取类字段?

Java 是否可以以排序方式获取类字段?,java,arrays,class,sorting,Java,Arrays,Class,Sorting,可能是个愚蠢的问题,但是,我知道在java中,我在java.lang.Class上有一个名为getFields()的方法,它将返回一个Field对象数组,而且我还知道结果根本不会被排序 返回一个数组,该数组包含反映所有 此字段表示的类或接口的可访问公共字段 类对象。返回的数组中的元素未排序,因此 没有任何特定的顺序。此方法返回 如果类或接口没有可访问的公共字段,则长度为0,或者 如果它表示数组类、基元类型或void 现在,如果我想对这些字段进行排序,该怎么办?有没有一种方法可以为我返回它们?还是

可能是个愚蠢的问题,但是,我知道在java中,我在
java.lang.Class
上有一个名为
getFields()
的方法,它将返回一个
Field
对象数组,而且我还知道结果根本不会被排序

返回一个数组,该数组包含反映所有 此字段表示的类或接口的可访问公共字段 类对象。返回的数组中的元素未排序,因此 没有任何特定的顺序。此方法返回 如果类或接口没有可访问的公共字段,则长度为0,或者 如果它表示数组类、基元类型或void

现在,如果我想对这些字段进行排序,该怎么办?有没有一种方法可以为我返回它们?还是我必须自己分类


从中我知道我可以使用
比较器对它们进行排序。我只是想知道我是否真的必须自己执行这一额外步骤。

基于属性对对象数组进行排序可以写在一行中:

Field[] fields = String.class.getDeclaredFields();
Arrays.sort(fields, comparing(Field::getName));

使用静态导入:
import static java.util.Comparator.comparating

标准JDK没有任何方法可以满足您的需要,因此,如果您仅限于JDK,则需要执行此额外步骤。现在我发现了一些东西,比如如果你对外部库感兴趣,你会寻找什么样的解决方案,不用你对它们进行排序就可以对它们进行排序?我不是想轻率,但是如果他们没有被分类,而你想要他们被分类。。。你需要把它们分类。也就是说,如果你只是不想写比较仪,你可能想看看番石榴的。“如果你只是不想写比较仪”之类的东西哈哈。我更好奇,而不是懒惰。另外,来自Guava的很好的解决方案。额外的步骤可能看起来像
Arrays.sort(fields,comparing(Field::getName))-看起来不太糟糕,是吗?@assylias可能应该发布一个答案。至于其他的评论,我知道我必须对它进行排序,你向我展示了一个非常好的方法。谢谢请注意,此解决方案需要Java1.8或更高版本。如果您使用的是早期版本,它将不起作用:
java.util.Comparator.Comparating
java.util.function.function
在1.8中引入。(我工作的地方仍然有一些运行Java 1.6的旧服务器…)