Guest User

Untitled

a guest
Jan 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. package fr.tse.fise2.info4.lab11;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.HashSet;
  7. import java.util.List;
  8. import java.util.Set;
  9.  
  10. /**
  11. * Utilities for introspection
  12. *
  13. * @author Julien Subercaze
  14. *
  15. */
  16. @SuppressWarnings("rawtypes")
  17. public class ReflectionUtils {
  18.  
  19. public static Set<Class> getClassesFromCollection(List<Object> collec) {
  20. Set<Class> clazzes = new HashSet<>();
  21. for (Object obj : collec) {
  22. clazzes.add(obj.getClass());
  23. }
  24.  
  25. return clazzes;
  26.  
  27. //@formatter:off
  28. // return collec
  29. // .stream()
  30. // .map(obj -> obj.getClass())
  31. // .collect(Collectors.toSet());
  32. //@formatter:on
  33. }
  34.  
  35. /**
  36. *
  37. * @param clazz
  38. * @return TODO
  39. */
  40. public static List<Field> listFields(Class clazz) {
  41.  
  42. List<Field> myFields = new ArrayList<>();
  43. while (clazz != null) {
  44. Field[] fields = clazz.getDeclaredFields();
  45. for (Field field : fields) {
  46. myFields.add(field);
  47. }
  48.  
  49. // @formatter:off
  50. // Arrays.asList(clazz.getDeclaredFields())
  51. // .stream()
  52. // .forEach(f -> myFields.add(f));
  53. // @formatter:on
  54.  
  55. clazz = clazz.getSuperclass();
  56. }
  57. return myFields;
  58. }
  59.  
  60. public static void main(String[] args) {
  61. Car c1 = new Car("peugeot", "205", "2E 234 42", 1997);
  62. Car c2 = new Car("citroen", "c4", "DF 2ZA 69", 2001);
  63. Plane p1 = new Plane("Airbus", "A320", "AF3456", 2004);
  64. Plane p2 = new Plane("Boeing", "B747", "DL345T56", 2006);
  65.  
  66. List<Object> objects = new ArrayList<>();
  67. objects.add(c1);
  68. objects.add(c2);
  69. objects.add(p1);
  70. objects.add(p2);
  71.  
  72. Set<Class> clazzes = ReflectionUtils.getClassesFromCollection(objects);
  73. for (Class cls : clazzes) {
  74. System.out.println("Class " + cls + " has fields : ");
  75. for (Field f : listFields(cls)) {
  76. System.out.println(f);
  77. }
  78. }
  79.  
  80. // @formatter:off
  81. /*ReflectionUtils
  82. .getClassesFromCollection(objects)
  83. .stream()
  84. .forEach(cls -> {
  85. System.out.println("Class " + cls + " has fields : ");
  86. listFields(cls)
  87. .stream()
  88. .forEach(f -> System.out.println(f));
  89. });*/
  90. // @formatter:on
  91. }
  92. }
Add Comment
Please, Sign In to add comment