Skip to content

Commit

Permalink
Backport 2f46af05ce2d43e19e0095680eb3a52fd904c774
Browse files Browse the repository at this point in the history
  • Loading branch information
duke committed Dec 31, 2022
1 parent 82790b0 commit 0c38f5c
Show file tree
Hide file tree
Showing 2 changed files with 1,528 additions and 29 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -98,10 +98,7 @@ static List<Method> get(Class<?> type) {

/**
* A comparator that defines a total order so that methods have the same
* name and identical signatures appear next to each others. The methods are
* sorted in such a way that methods which override each other will sit next
* to each other, with the overridden method last - e.g. is Integer getFoo()
* placed before Object getFoo().
* name and identical signatures appear next to each others.
**/
private static final class MethodOrder implements Comparator<Method> {

Expand Down Expand Up @@ -132,18 +129,7 @@ public int compare(final Method a, final Method b) {
}
final Class<?> aret = a.getReturnType();
final Class<?> bret = b.getReturnType();
if (aret == bret) {
return 0;
}

// Super type comes last: Integer, Number, Object
if (aret.isAssignableFrom(bret)) {
return 1;
}
if (bret.isAssignableFrom(aret)) {
return -1;
}
return aret.getName().compareTo(bret.getName());
return aret == bret ? 0 : aret.getName().compareTo(bret.getName());
}

static final MethodOrder instance = new MethodOrder();
Expand Down
Loading

0 comments on commit 0c38f5c

Please sign in to comment.