List içerisindeki objelerin attribute lara göre sıralanması

List arayüzü içerisindeki bir objenin herhangi bir attribute a göre listelenmesi icin bir Comparator yazmanız gerekiyor. Aşağıda Comparator arayüzünü kullanan reflection sayesinde istediğiniz attributa göre listeleme yapan bir sınıf bulunuyor.

    import java.lang.reflect.Method;
    import java.util.Comparator;
     
    public class ReflectionComparator implements Comparator {
     private String methodName;
     
     public ReflectionComparator(String methodName) {
      this.methodName = methodName;
     }
     
     public int compare(Object o1, Object o2) {
      try {
       Method m1 = o1.getClass().getMethod(methodName, new Class[] {});
       Method m2 = o2.getClass().getMethod(methodName, new Class[] {});
       return ((String) m1.invoke(o1, new Object[] {})).compareTo((String) m2.invoke(o2, new Object[] {}));
      } catch (Exception ex) {
       throw new RuntimeException("hata", ex);
      }
     }
    }

Sınıfın kullanım şeklide aşağıdaki gibidir.

    Collections.sort(list, new ReflectionComparator("getName"));
No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>