<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FReflection%2FSignature</id>
		<title>Java/Reflection/Signature - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FReflection%2FSignature"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Reflection/Signature&amp;action=history"/>
		<updated>2026-04-23T22:30:19Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Reflection/Signature&amp;diff=6099&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Reflection/Signature&amp;diff=6099&amp;oldid=prev"/>
				<updated>2010-06-01T06:02:09Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:02, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Reflection/Signature&amp;diff=6098&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Reflection/Signature&amp;diff=6098&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Contains Same Field Name ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
//&lt;br /&gt;
//$Id: IntrospectionUtil.java 1540 2007-01-19 12:24:10Z janb $&lt;br /&gt;
//Copyright 2006 Mort Bay Consulting Pty. Ltd.&lt;br /&gt;
//------------------------------------------------------------------------&lt;br /&gt;
//Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
//you may not use this file except in compliance with the License.&lt;br /&gt;
//You may obtain a copy of the License at &lt;br /&gt;
//http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
//Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
//distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
//See the License for the specific language governing permissions and&lt;br /&gt;
//limitations under the License.&lt;br /&gt;
//&lt;br /&gt;
import java.lang.reflect.Field;&lt;br /&gt;
import java.lang.reflect.Member;&lt;br /&gt;
import java.lang.reflect.Method;&lt;br /&gt;
import java.lang.reflect.Modifier;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
public class IntrospectionUtil {&lt;br /&gt;
&lt;br /&gt;
  public static boolean containsSameFieldName(Field field, Class c, boolean checkPackage) {&lt;br /&gt;
    if (checkPackage) {&lt;br /&gt;
      if (!c.getPackage().equals(field.getDeclaringClass().getPackage()))&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    boolean sameName = false;&lt;br /&gt;
    Field[] fields = c.getDeclaredFields();&lt;br /&gt;
    for (int i = 0; i &amp;lt; fields.length &amp;amp;&amp;amp; !sameName; i++) {&lt;br /&gt;
      if (fields[i].getName().equals(field.getName()))&lt;br /&gt;
        sameName = true;&lt;br /&gt;
    }&lt;br /&gt;
    return sameName;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static boolean isInheritable(Package pack, Member member) {&lt;br /&gt;
    if (pack == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (member == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    int modifiers = member.getModifiers();&lt;br /&gt;
    if (Modifier.isPublic(modifiers))&lt;br /&gt;
      return true;&lt;br /&gt;
    if (Modifier.isProtected(modifiers))&lt;br /&gt;
      return true;&lt;br /&gt;
    if (!Modifier.isPrivate(modifiers) &amp;amp;&amp;amp; pack.equals(member.getDeclaringClass().getPackage()))&lt;br /&gt;
      return true;&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean checkParams(Class[] formalParams, Class[] actualParams, boolean strict) {&lt;br /&gt;
    if (formalParams == null &amp;amp;&amp;amp; actualParams == null)&lt;br /&gt;
      return true;&lt;br /&gt;
    if (formalParams == null &amp;amp;&amp;amp; actualParams != null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalParams != null &amp;amp;&amp;amp; actualParams == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalParams.length != actualParams.length)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalParams.length == 0)&lt;br /&gt;
      return true;&lt;br /&gt;
    int j = 0;&lt;br /&gt;
    if (strict) {&lt;br /&gt;
      while (j &amp;lt; formalParams.length &amp;amp;&amp;amp; formalParams[j].equals(actualParams[j]))&lt;br /&gt;
        j++;&lt;br /&gt;
    } else {&lt;br /&gt;
      while ((j &amp;lt; formalParams.length) &amp;amp;&amp;amp; (formalParams[j].isAssignableFrom(actualParams[j]))) {&lt;br /&gt;
        j++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (j != formalParams.length) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean isSameSignature(Method methodA, Method methodB) {&lt;br /&gt;
    if (methodA == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (methodB == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    List parameterTypesA = Arrays.asList(methodA.getParameterTypes());&lt;br /&gt;
    List parameterTypesB = Arrays.asList(methodB.getParameterTypes());&lt;br /&gt;
    if (methodA.getName().equals(methodB.getName()) &amp;amp;&amp;amp; parameterTypesA.containsAll(parameterTypesB))&lt;br /&gt;
      return true;&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean isTypeCompatible(Class formalType, Class actualType, boolean strict) {&lt;br /&gt;
    if (formalType == null &amp;amp;&amp;amp; actualType != null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalType != null &amp;amp;&amp;amp; actualType == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalType == null &amp;amp;&amp;amp; actualType == null)&lt;br /&gt;
      return true;&lt;br /&gt;
    if (strict)&lt;br /&gt;
      return formalType.equals(actualType);&lt;br /&gt;
    else&lt;br /&gt;
      return formalType.isAssignableFrom(actualType);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  protected static Method findInheritedMethod(Package pack, Class clazz, String methodName,&lt;br /&gt;
      Class[] args, boolean strictArgs) throws NoSuchMethodException {&lt;br /&gt;
    if (clazz == null)&lt;br /&gt;
      throw new NoSuchMethodException(&amp;quot;No class&amp;quot;);&lt;br /&gt;
    if (methodName == null)&lt;br /&gt;
      throw new NoSuchMethodException(&amp;quot;No method name&amp;quot;);&lt;br /&gt;
    Method method = null;&lt;br /&gt;
    Method[] methods = clazz.getDeclaredMethods();&lt;br /&gt;
    for (int i = 0; i &amp;lt; methods.length &amp;amp;&amp;amp; method == null; i++) {&lt;br /&gt;
      if (methods[i].getName().equals(methodName) &amp;amp;&amp;amp; isInheritable(pack, methods[i])&lt;br /&gt;
          &amp;amp;&amp;amp; checkParams(methods[i].getParameterTypes(), args, strictArgs))&lt;br /&gt;
        method = methods[i];&lt;br /&gt;
    }&lt;br /&gt;
    if (method != null) {&lt;br /&gt;
      return method;&lt;br /&gt;
    } else&lt;br /&gt;
      return findInheritedMethod(clazz.getPackage(), clazz.getSuperclass(), methodName, args,&lt;br /&gt;
          strictArgs);&lt;br /&gt;
  }&lt;br /&gt;
  protected static Field findInheritedField(Package pack, Class clazz, String fieldName,&lt;br /&gt;
      Class fieldType, boolean strictType) throws NoSuchFieldException {&lt;br /&gt;
    if (clazz == null)&lt;br /&gt;
      throw new NoSuchFieldException(&amp;quot;No class&amp;quot;);&lt;br /&gt;
    if (fieldName == null)&lt;br /&gt;
      throw new NoSuchFieldException(&amp;quot;No field name&amp;quot;);&lt;br /&gt;
    try {&lt;br /&gt;
      Field field = clazz.getDeclaredField(fieldName);&lt;br /&gt;
      if (isInheritable(pack, field) &amp;amp;&amp;amp; isTypeCompatible(fieldType, field.getType(), strictType))&lt;br /&gt;
        return field;&lt;br /&gt;
      else&lt;br /&gt;
        return findInheritedField(clazz.getPackage(), clazz.getSuperclass(), fieldName, fieldType,&lt;br /&gt;
            strictType);&lt;br /&gt;
    } catch (NoSuchFieldException e) {&lt;br /&gt;
      return findInheritedField(clazz.getPackage(), clazz.getSuperclass(), fieldName, fieldType,&lt;br /&gt;
          strictType);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contains Same Method Signature ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
//&lt;br /&gt;
//$Id: IntrospectionUtil.java 1540 2007-01-19 12:24:10Z janb $&lt;br /&gt;
//Copyright 2006 Mort Bay Consulting Pty. Ltd.&lt;br /&gt;
//------------------------------------------------------------------------&lt;br /&gt;
//Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
//you may not use this file except in compliance with the License.&lt;br /&gt;
//You may obtain a copy of the License at &lt;br /&gt;
//http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
//Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
//distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
//See the License for the specific language governing permissions and&lt;br /&gt;
//limitations under the License.&lt;br /&gt;
//&lt;br /&gt;
import java.lang.reflect.Field;&lt;br /&gt;
import java.lang.reflect.Member;&lt;br /&gt;
import java.lang.reflect.Method;&lt;br /&gt;
import java.lang.reflect.Modifier;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
public class IntrospectionUtil {&lt;br /&gt;
  public static boolean containsSameMethodSignature(Method method, Class c, boolean checkPackage) {&lt;br /&gt;
    if (checkPackage) {&lt;br /&gt;
      if (!c.getPackage().equals(method.getDeclaringClass().getPackage()))&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    boolean samesig = false;&lt;br /&gt;
    Method[] methods = c.getDeclaredMethods();&lt;br /&gt;
    for (int i = 0; i &amp;lt; methods.length &amp;amp;&amp;amp; !samesig; i++) {&lt;br /&gt;
      if (IntrospectionUtil.isSameSignature(method, methods[i]))&lt;br /&gt;
        samesig = true;&lt;br /&gt;
    }&lt;br /&gt;
    return samesig;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean containsSameFieldName(Field field, Class c, boolean checkPackage) {&lt;br /&gt;
    if (checkPackage) {&lt;br /&gt;
      if (!c.getPackage().equals(field.getDeclaringClass().getPackage()))&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    boolean sameName = false;&lt;br /&gt;
    Field[] fields = c.getDeclaredFields();&lt;br /&gt;
    for (int i = 0; i &amp;lt; fields.length &amp;amp;&amp;amp; !sameName; i++) {&lt;br /&gt;
      if (fields[i].getName().equals(field.getName()))&lt;br /&gt;
        sameName = true;&lt;br /&gt;
    }&lt;br /&gt;
    return sameName;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static boolean isInheritable(Package pack, Member member) {&lt;br /&gt;
    if (pack == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (member == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    int modifiers = member.getModifiers();&lt;br /&gt;
    if (Modifier.isPublic(modifiers))&lt;br /&gt;
      return true;&lt;br /&gt;
    if (Modifier.isProtected(modifiers))&lt;br /&gt;
      return true;&lt;br /&gt;
    if (!Modifier.isPrivate(modifiers) &amp;amp;&amp;amp; pack.equals(member.getDeclaringClass().getPackage()))&lt;br /&gt;
      return true;&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean checkParams(Class[] formalParams, Class[] actualParams, boolean strict) {&lt;br /&gt;
    if (formalParams == null &amp;amp;&amp;amp; actualParams == null)&lt;br /&gt;
      return true;&lt;br /&gt;
    if (formalParams == null &amp;amp;&amp;amp; actualParams != null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalParams != null &amp;amp;&amp;amp; actualParams == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalParams.length != actualParams.length)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalParams.length == 0)&lt;br /&gt;
      return true;&lt;br /&gt;
    int j = 0;&lt;br /&gt;
    if (strict) {&lt;br /&gt;
      while (j &amp;lt; formalParams.length &amp;amp;&amp;amp; formalParams[j].equals(actualParams[j]))&lt;br /&gt;
        j++;&lt;br /&gt;
    } else {&lt;br /&gt;
      while ((j &amp;lt; formalParams.length) &amp;amp;&amp;amp; (formalParams[j].isAssignableFrom(actualParams[j]))) {&lt;br /&gt;
        j++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (j != formalParams.length) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean isSameSignature(Method methodA, Method methodB) {&lt;br /&gt;
    if (methodA == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (methodB == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    List parameterTypesA = Arrays.asList(methodA.getParameterTypes());&lt;br /&gt;
    List parameterTypesB = Arrays.asList(methodB.getParameterTypes());&lt;br /&gt;
    if (methodA.getName().equals(methodB.getName()) &amp;amp;&amp;amp; parameterTypesA.containsAll(parameterTypesB))&lt;br /&gt;
      return true;&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean isTypeCompatible(Class formalType, Class actualType, boolean strict) {&lt;br /&gt;
    if (formalType == null &amp;amp;&amp;amp; actualType != null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalType != null &amp;amp;&amp;amp; actualType == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (formalType == null &amp;amp;&amp;amp; actualType == null)&lt;br /&gt;
      return true;&lt;br /&gt;
    if (strict)&lt;br /&gt;
      return formalType.equals(actualType);&lt;br /&gt;
    else&lt;br /&gt;
      return formalType.isAssignableFrom(actualType);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  protected static Method findInheritedMethod(Package pack, Class clazz, String methodName,&lt;br /&gt;
      Class[] args, boolean strictArgs) throws NoSuchMethodException {&lt;br /&gt;
    if (clazz == null)&lt;br /&gt;
      throw new NoSuchMethodException(&amp;quot;No class&amp;quot;);&lt;br /&gt;
    if (methodName == null)&lt;br /&gt;
      throw new NoSuchMethodException(&amp;quot;No method name&amp;quot;);&lt;br /&gt;
    Method method = null;&lt;br /&gt;
    Method[] methods = clazz.getDeclaredMethods();&lt;br /&gt;
    for (int i = 0; i &amp;lt; methods.length &amp;amp;&amp;amp; method == null; i++) {&lt;br /&gt;
      if (methods[i].getName().equals(methodName) &amp;amp;&amp;amp; isInheritable(pack, methods[i])&lt;br /&gt;
          &amp;amp;&amp;amp; checkParams(methods[i].getParameterTypes(), args, strictArgs))&lt;br /&gt;
        method = methods[i];&lt;br /&gt;
    }&lt;br /&gt;
    if (method != null) {&lt;br /&gt;
      return method;&lt;br /&gt;
    } else&lt;br /&gt;
      return findInheritedMethod(clazz.getPackage(), clazz.getSuperclass(), methodName, args,&lt;br /&gt;
          strictArgs);&lt;br /&gt;
  }&lt;br /&gt;
  protected static Field findInheritedField(Package pack, Class clazz, String fieldName,&lt;br /&gt;
      Class fieldType, boolean strictType) throws NoSuchFieldException {&lt;br /&gt;
    if (clazz == null)&lt;br /&gt;
      throw new NoSuchFieldException(&amp;quot;No class&amp;quot;);&lt;br /&gt;
    if (fieldName == null)&lt;br /&gt;
      throw new NoSuchFieldException(&amp;quot;No field name&amp;quot;);&lt;br /&gt;
    try {&lt;br /&gt;
      Field field = clazz.getDeclaredField(fieldName);&lt;br /&gt;
      if (isInheritable(pack, field) &amp;amp;&amp;amp; isTypeCompatible(fieldType, field.getType(), strictType))&lt;br /&gt;
        return field;&lt;br /&gt;
      else&lt;br /&gt;
        return findInheritedField(clazz.getPackage(), clazz.getSuperclass(), fieldName, fieldType,&lt;br /&gt;
            strictType);&lt;br /&gt;
    } catch (NoSuchFieldException e) {&lt;br /&gt;
      return findInheritedField(clazz.getPackage(), clazz.getSuperclass(), fieldName, fieldType,&lt;br /&gt;
          strictType);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Is the Same Signature ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
//&lt;br /&gt;
//$Id: IntrospectionUtil.java 1540 2007-01-19 12:24:10Z janb $&lt;br /&gt;
//Copyright 2006 Mort Bay Consulting Pty. Ltd.&lt;br /&gt;
//------------------------------------------------------------------------&lt;br /&gt;
//Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
//you may not use this file except in compliance with the License.&lt;br /&gt;
//You may obtain a copy of the License at &lt;br /&gt;
//http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
//Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
//distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
//See the License for the specific language governing permissions and&lt;br /&gt;
//limitations under the License.&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
import java.lang.reflect.Method;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
public class Utils {&lt;br /&gt;
  public static boolean isSameSignature(Method methodA, Method methodB) {&lt;br /&gt;
    if (methodA == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    if (methodB == null)&lt;br /&gt;
      return false;&lt;br /&gt;
    List parameterTypesA = Arrays.asList(methodA.getParameterTypes());&lt;br /&gt;
    List parameterTypesB = Arrays.asList(methodB.getParameterTypes());&lt;br /&gt;
    if (methodA.getName().equals(methodB.getName()) &amp;amp;&amp;amp; parameterTypesA.containsAll(parameterTypesB))&lt;br /&gt;
      return true;&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>