| 1 package com.eireneh.eliza.util; 2 3 import java.lang.reflect.Method ; 4 import java.util.Arrays ; 5 6 23 public class OverloadUtil 24 { 25 38 public static boolean isOverloaded(Method higher, Method lower) 39 { 40 if (namesAreEqual(higher, lower) && returnTypesAreEqualOrCovariant(higher, lower) && isNotInterfaceImplementation(higher, lower) 41 && isNotOverridden(higher, lower)) 42 { 43 return true; 44 45 } 46 else 47 { 48 return false; 49 } 50 } 51 52 private static boolean isNotOverridden(Method higher, Method lower) 53 { 54 if (isOverridden(higher, lower)) 55 { 56 return false; 57 } 58 else 59 { 60 return true; 61 } 62 } 63 64 69 private static boolean isOverridden(Method higher, Method lower) 70 { 71 return declaringClassIsAssignableFrom(higher, lower) && declaringClassIsNotAnInterface(higher) && parametersAreEqual(higher, lower); 72 } 73 74 80 private static boolean declaringClassIsAssignableFrom(Method first, Method second) 81 { 82 return first.getDeclaringClass().isAssignableFrom(second.getDeclaringClass()); 83 84 } 85 86 95 private static boolean isNotInterfaceImplementation(Method higher, Method lower) 96 { 97 return !(declaringClassIsAnInterface(higher) && parametersAreEqual(higher, lower)); 98 } 99 100 107 private static boolean parametersAreEqual(Method first, Method second) 108 { 109 return Arrays.deepEquals(first.getParameterTypes(), second.getParameterTypes()); 110 } 111 112 117 private static boolean returnTypesAreEqualOrCovariant(Method higher, Method lower) 118 { 119 return (declaringClassIsAssignableFrom(higher, lower) || higher.getReturnType().equals(lower.getReturnType())); 120 } 121 122 127 private static boolean namesAreEqual(Method first, Method second) 128 { 129 return first.getName().equals(second.getName()); 130 } 131 132 private static boolean declaringClassIsAnInterface(Method method) 133 { 134 return method.getDeclaringClass().isInterface(); 135 } 136 137 private static boolean declaringClassIsNotAnInterface(Method method) 138 { 139 return !declaringClassIsAnInterface(method); 140 } 141 142 } 143 | Popular Tags |