Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>A sample for my annotation based idea.</p> <pre><code>public class FiledOrder { @Retention(RetentionPolicy.RUNTIME) public @interface Order { int value(); } public class SomeClass { @Order(value=2) public int field1; @Order(value=1) public int field2; // no annotation public int field3; @Order(value=1) public void start() { } @Order(value=2) public void end() { } } /** * @param args */ public static void main(String[] args) { Field[] fields = SomeClass.class.getFields(); Arrays.sort(fields, new Comparator&lt;Field&gt;() { @Override public int compare(Field o1, Field o2) { Order or1 = o1.getAnnotation(Order.class); Order or2 = o2.getAnnotation(Order.class); // nulls last if (or1 != null &amp;&amp; or2 != null) { return or1.value() - or2.value(); } else if (or1 != null &amp;&amp; or2 == null) { return -1; } else if (or1 == null &amp;&amp; or2 != null) { return 1; } return o1.getName().compareTo(o2.getName()); } }); for (Field f : fields) { System.out.println(f.getName()); } Method[] methods = SomeClass.class.getMethods(); Arrays.sort(methods, new Comparator&lt;Method&gt;() { @Override public int compare(Method o1, Method o2) { Order or1 = o1.getAnnotation(Order.class); Order or2 = o2.getAnnotation(Order.class); // nulls last if (or1 != null &amp;&amp; or2 != null) { return or1.value() - or2.value(); } else if (or1 != null &amp;&amp; or2 == null) { return -1; } else if (or1 == null &amp;&amp; or2 != null) { return 1; } return o1.getName().compareTo(o2.getName()); } }); for (Method m : methods) { System.out.println(m.getName()); } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload