Class MemberBox

  • All Implemented Interfaces:
    java.io.Serializable

    final class MemberBox
    extends java.lang.Object
    implements java.io.Serializable
    Wrapper class for Method and Constructor instances to cache getParameterTypes() results, recover from IllegalAccessException in some cases and provide serialization support.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) java.lang.Class<?>[] argTypes  
      (package private) java.lang.Object delegateTo  
      private java.lang.reflect.Member memberObject  
      private static java.lang.Class<?>[] primitives  
      private static long serialVersionUID  
      (package private) boolean vararg  
    • Constructor Summary

      Constructors 
      Constructor Description
      MemberBox​(java.lang.reflect.Constructor<?> constructor)  
      MemberBox​(java.lang.reflect.Method method)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) java.lang.reflect.Constructor<?> ctor()  
      (package private) java.lang.Class<?> getDeclaringClass()  
      (package private) java.lang.String getName()  
      private void init​(java.lang.reflect.Constructor<?> constructor)  
      private void init​(java.lang.reflect.Method method)  
      (package private) java.lang.Object invoke​(java.lang.Object target, java.lang.Object[] args)  
      (package private) boolean isCtor()  
      (package private) boolean isMethod()  
      (package private) boolean isPublic()  
      (package private) boolean isStatic()  
      (package private) java.lang.reflect.Member member()  
      (package private) java.lang.reflect.Method method()  
      (package private) java.lang.Object newInstance​(java.lang.Object[] args)  
      private static java.lang.reflect.Member readMember​(java.io.ObjectInputStream in)
      Reads a Method or a Constructor from the stream.
      private void readObject​(java.io.ObjectInputStream in)  
      private static java.lang.Class<?>[] readParameters​(java.io.ObjectInputStream in)
      Reads an array of parameter types from the stream.
      private static java.lang.reflect.Method searchAccessibleMethod​(java.lang.reflect.Method method, java.lang.Class<?>[] params)  
      (package private) java.lang.String toJavaDeclaration()  
      java.lang.String toString()  
      private static void writeMember​(java.io.ObjectOutputStream out, java.lang.reflect.Member member)
      Writes a Constructor or Method object.
      private void writeObject​(java.io.ObjectOutputStream out)  
      private static void writeParameters​(java.io.ObjectOutputStream out, java.lang.Class<?>[] parms)
      Writes an array of parameter types to the stream.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • memberObject

        private transient java.lang.reflect.Member memberObject
      • argTypes

        transient java.lang.Class<?>[] argTypes
      • delegateTo

        transient java.lang.Object delegateTo
      • vararg

        transient boolean vararg
      • primitives

        private static final java.lang.Class<?>[] primitives
    • Constructor Detail

      • MemberBox

        MemberBox​(java.lang.reflect.Method method)
      • MemberBox

        MemberBox​(java.lang.reflect.Constructor<?> constructor)
    • Method Detail

      • init

        private void init​(java.lang.reflect.Method method)
      • init

        private void init​(java.lang.reflect.Constructor<?> constructor)
      • method

        java.lang.reflect.Method method()
      • ctor

        java.lang.reflect.Constructor<?> ctor()
      • member

        java.lang.reflect.Member member()
      • isMethod

        boolean isMethod()
      • isCtor

        boolean isCtor()
      • isStatic

        boolean isStatic()
      • isPublic

        boolean isPublic()
      • getName

        java.lang.String getName()
      • getDeclaringClass

        java.lang.Class<?> getDeclaringClass()
      • toJavaDeclaration

        java.lang.String toJavaDeclaration()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • invoke

        java.lang.Object invoke​(java.lang.Object target,
                                java.lang.Object[] args)
      • newInstance

        java.lang.Object newInstance​(java.lang.Object[] args)
      • searchAccessibleMethod

        private static java.lang.reflect.Method searchAccessibleMethod​(java.lang.reflect.Method method,
                                                                       java.lang.Class<?>[] params)
      • readObject

        private void readObject​(java.io.ObjectInputStream in)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream out)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • writeMember

        private static void writeMember​(java.io.ObjectOutputStream out,
                                        java.lang.reflect.Member member)
                                 throws java.io.IOException
        Writes a Constructor or Method object. Methods and Constructors are not serializable, so we must serialize information about the class, the name, and the parameters and recreate upon deserialization.
        Throws:
        java.io.IOException
      • readMember

        private static java.lang.reflect.Member readMember​(java.io.ObjectInputStream in)
                                                    throws java.io.IOException,
                                                           java.lang.ClassNotFoundException
        Reads a Method or a Constructor from the stream.
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • writeParameters

        private static void writeParameters​(java.io.ObjectOutputStream out,
                                            java.lang.Class<?>[] parms)
                                     throws java.io.IOException
        Writes an array of parameter types to the stream. Requires special handling because primitive types cannot be found upon deserialization by the default Java implementation.
        Throws:
        java.io.IOException
      • readParameters

        private static java.lang.Class<?>[] readParameters​(java.io.ObjectInputStream in)
                                                    throws java.io.IOException,
                                                           java.lang.ClassNotFoundException
        Reads an array of parameter types from the stream.
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException