Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. public class FiledOrder {
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface Order {
  4. int value();
  5. }
  6. public class SomeClass {
  7. @Order(value=2)
  8. public int field1;
  9. @Order(value=1)
  10. public int field2;
  11. // no annotation
  12. public int field3;
  13. @Order(value=1)
  14. public void start() { }
  15. @Order(value=2)
  16. public void end() { }
  17. }
  18. /**
  19. * @param args
  20. */
  21. public static void main(String[] args) {
  22. Field[] fields = SomeClass.class.getFields();
  23. Arrays.sort(fields, new Comparator<Field>() {
  24. @Override
  25. public int compare(Field o1, Field o2) {
  26. Order or1 = o1.getAnnotation(Order.class);
  27. Order or2 = o2.getAnnotation(Order.class);
  28. // nulls last
  29. if (or1 != null && or2 != null) {
  30. return or1.value() - or2.value();
  31. } else
  32. if (or1 != null && or2 == null) {
  33. return -1;
  34. } else
  35. if (or1 == null && or2 != null) {
  36. return 1;
  37. }
  38. return o1.getName().compareTo(o2.getName());
  39. }
  40. });
  41. for (Field f : fields) {
  42. System.out.println(f.getName());
  43. }
  44. Method[] methods = SomeClass.class.getMethods();
  45. Arrays.sort(methods, new Comparator<Method>() {
  46. @Override
  47. public int compare(Method o1, Method o2) {
  48. Order or1 = o1.getAnnotation(Order.class);
  49. Order or2 = o2.getAnnotation(Order.class);
  50. // nulls last
  51. if (or1 != null && or2 != null) {
  52. return or1.value() - or2.value();
  53. } else
  54. if (or1 != null && or2 == null) {
  55. return -1;
  56. } else
  57. if (or1 == null && or2 != null) {
  58. return 1;
  59. }
  60. return o1.getName().compareTo(o2.getName());
  61. }
  62. });
  63. for (Method m : methods) {
  64. System.out.println(m.getName());
  65. }
  66. }
  67.  
  68. }
  69.  
  70. public void PrintClassData(Class c) {
  71. Field[] fieldArray = c.getFields();
  72. Method[] methodArray = c.getMethods();
  73. SortedSet<Field> fields = new TreeSet<Field>(new FieldComparator());
  74. fields.addAll(Arrays.asList(fieldArray));
  75. SortedSet<Method> methods = new TreeSet<Method>(new MethodComparator());
  76. methods.addAll(Arrays.asList(methodArray));
  77.  
  78. StringBuffer b = new StringBuffer("All About ");
  79. b.append(c.getName());
  80. b.append("nFields:n");
  81. for(Field f : fields) {
  82. b.append("t");
  83. b.append(Modifier.toString(f.getModifiers()));
  84. b.append(" ");
  85. b.append(f.getType());
  86. b.append(" ");
  87. b.append(f.getName());
  88. b.append("n");
  89. }
  90. b.append("nMethods:n");
  91. for (Method m : methods) {
  92. b.append("t");
  93. b.append(Modifier.toString(m.getModifiers()));
  94. b.append(" ");
  95. b.append(m.getReturnType());
  96. b.append(" ");
  97. b.append(m.getName());
  98. b.append("( ");
  99. for (Class param : m.getParameterTypes()) {
  100. b.append(param.getName());
  101. b.append(", ");
  102. }
  103. b.deleteCharAt(b.lastIndexOf(","));
  104. b.append(")n");
  105. }
  106. System.out.println(b.toString());
  107. }
  108.  
  109. private static class FieldComparator implements Comparator<Field> {
  110.  
  111. public int compare(Field f1, Field f2) {
  112. return (f1.getName().compareTo(f2.getName()));
  113. }
  114. }
  115.  
  116. private static class MethodComparator implements Comparator<Method> {
  117.  
  118. public int compare(Method m1, Method m2) {
  119. return (m1.getName().compareTo(m2.getName()));
  120. }
  121.  
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement