Class MemberUtils

java.lang.Object
org.apache.commons.lang.reflect.MemberUtils

abstract class MemberUtils extends Object
Contains common code for working with Methods/Constructors, extracted and refactored from MethodUtils when it was imported from Commons BeanUtils.
Since:
2.5
Version:
$Id: MemberUtils.java 1057013 2011-01-09 20:04:16Z niallp $
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final int
     
    private static final Method
     
    private static final Class[]
    Array of primitive number types ordered by "promotability"
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) static int
    compareParameterTypes(Class[] left, Class[] right, Class[] actual)
    Compare the relative fitness of two sets of parameter types in terms of matching a third set of runtime parameter types, such that a list ordered by the results of the comparison would return the best match first (least).
    private static float
    getObjectTransformationCost(Class srcClass, Class destClass)
    Gets the number of steps required needed to turn the source class into the destination class.
    private static float
    getPrimitivePromotionCost(Class srcClass, Class destClass)
    Get the number of steps required to promote a primitive number to another type.
    private static float
    getTotalTransformationCost(Class[] srcArgs, Class[] destArgs)
    Returns the sum of the object transformation cost for each class in the source argument list.
    (package private) static boolean
    Check a Member for basic accessibility.
    (package private) static boolean
    isPackageAccess(int modifiers)
    Learn whether a given set of modifiers implies package access.
    (package private) static boolean
    Try to learn whether a given member, on JDK >= 1.5, is synthetic.
    (package private) static void
    XXX Default access superclass workaround When a public class has a default access superclass with public members, these members are accessible.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • ACCESS_TEST

      private static final int ACCESS_TEST
      See Also:
    • IS_SYNTHETIC

      private static final Method IS_SYNTHETIC
    • ORDERED_PRIMITIVE_TYPES

      private static final Class[] ORDERED_PRIMITIVE_TYPES
      Array of primitive number types ordered by "promotability"
  • Constructor Details

    • MemberUtils

      MemberUtils()
  • Method Details

    • setAccessibleWorkaround

      static void setAccessibleWorkaround(AccessibleObject o)
      XXX Default access superclass workaround When a public class has a default access superclass with public members, these members are accessible. Calling them from compiled code works fine. Unfortunately, on some JVMs, using reflection to invoke these members seems to (wrongly) to prevent access even when the modifer is public. Calling setAccessible(true) solves the problem but will only work from sufficiently privileged code. Better workarounds would be gratefully accepted.
      Parameters:
      o - the AccessibleObject to set as accessible
    • isPackageAccess

      static boolean isPackageAccess(int modifiers)
      Learn whether a given set of modifiers implies package access.
      Parameters:
      modifiers - to test
      Returns:
      true unless package/protected/private modifier detected
    • isAccessible

      static boolean isAccessible(Member m)
      Check a Member for basic accessibility.
      Parameters:
      m - Member to check
      Returns:
      true if m is accessible
    • isSynthetic

      static boolean isSynthetic(Member m)
      Try to learn whether a given member, on JDK >= 1.5, is synthetic.
      Parameters:
      m - Member to check
      Returns:
      true if m was introduced by the compiler.
    • compareParameterTypes

      static int compareParameterTypes(Class[] left, Class[] right, Class[] actual)
      Compare the relative fitness of two sets of parameter types in terms of matching a third set of runtime parameter types, such that a list ordered by the results of the comparison would return the best match first (least).
      Parameters:
      left - the "left" parameter set
      right - the "right" parameter set
      actual - the runtime parameter types to match against left/right
      Returns:
      int consistent with compare semantics
    • getTotalTransformationCost

      private static float getTotalTransformationCost(Class[] srcArgs, Class[] destArgs)
      Returns the sum of the object transformation cost for each class in the source argument list.
      Parameters:
      srcArgs - The source arguments
      destArgs - The destination arguments
      Returns:
      The total transformation cost
    • getObjectTransformationCost

      private static float getObjectTransformationCost(Class srcClass, Class destClass)
      Gets the number of steps required needed to turn the source class into the destination class. This represents the number of steps in the object hierarchy graph.
      Parameters:
      srcClass - The source class
      destClass - The destination class
      Returns:
      The cost of transforming an object
    • getPrimitivePromotionCost

      private static float getPrimitivePromotionCost(Class srcClass, Class destClass)
      Get the number of steps required to promote a primitive number to another type.
      Parameters:
      srcClass - the (primitive) source class
      destClass - the (primitive) destination class
      Returns:
      The cost of promoting the primitive