Class RJavaTools


  • public class RJavaTools
    extends java.lang.Object
    Tools used internally by rJava. The method lookup code is heavily based on ReflectionTools by Romain Francois <francoisromain@free.fr> licensed under GPL v2 or higher.
    • Constructor Summary

      Constructors 
      Constructor Description
      RJavaTools()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean classHasClass​(java.lang.Class cl, java.lang.String name, boolean staticRequired)
      Checks if the specified class has the given inner class.
      static boolean classHasField​(java.lang.Class cl, java.lang.String name, boolean staticRequired)
      Checks if the specified class has the given field.
      static boolean classHasMethod​(java.lang.Class cl, java.lang.String name, boolean staticRequired)
      Checks if the specified class has the given method.
      static java.lang.Class getClass​(java.lang.Class cl, java.lang.String name, boolean staticRequired)
      Returns an inner class of the class with the given simple name
      static java.lang.Class[] getClasses​(java.lang.Object o)
      Returns the list of classes of the object
      static java.lang.String[] getClassNames​(java.lang.Object o)
      Returns the list of class names of the object
      static java.lang.String getCompletionName​(java.lang.reflect.Member m)
      Completion name of a member.
      static java.lang.reflect.Constructor getConstructor​(java.lang.Class o_clazz, java.lang.Class[] arg_clazz, boolean[] arg_is_null)
      Attempts to find the best-matching constructor of the class o_clazz with the parameter types arg_clazz
      static java.lang.String[] getFieldNames​(java.lang.Class cl, boolean staticRequired)
      Returns the names of the fields of a given class
      static java.lang.String getFieldTypeName​(java.lang.Class cl, java.lang.String field)  
      static java.lang.reflect.Method getMethod​(java.lang.Class o_clazz, java.lang.String name, java.lang.Class[] arg_clazz, boolean[] arg_is_null)
      Attempts to find the best-matching method of the class o_clazz with the method name name and arguments types defined by arg_clazz.
      static java.lang.String[] getMethodNames​(java.lang.Class cl, boolean staticRequired)
      Returns the completion names of the methods of a given class.
      static java.lang.String[] getSimpleClassNames​(java.lang.Object o, boolean addConditionClasses)
      Returns the list of simple class names of the object
      static java.lang.Class[] getStaticClasses​(java.lang.Class cl)
      Returns the static inner classes of the class
      static java.lang.reflect.Field[] getStaticFields​(java.lang.Class cl)
      Returns the static fields of the class
      static java.lang.reflect.Method[] getStaticMethods​(java.lang.Class cl)
      Returns the static methods of the class
      static boolean hasClass​(java.lang.Object o, java.lang.String name)
      Checks if the class of the object has the given inner class.
      static boolean hasField​(java.lang.Object o, java.lang.String name)
      Checks if the class of the object has the given field.
      static boolean hasMethod​(java.lang.Object o, java.lang.String name)
      Checks if the class of the object has the given method.
      static java.lang.Object invokeMethod​(java.lang.Class o_clazz, java.lang.Object o, java.lang.String name, java.lang.Object[] args, java.lang.Class[] clazzes)
      Invoke a method of a given class
      static boolean isStatic​(java.lang.Class clazz)
      Indicates if a class is static
      static boolean isStatic​(java.lang.reflect.Member member)
      Indicates if a member of a Class (field, method ) is static
      static java.lang.Object newInstance​(java.lang.Class o_clazz, java.lang.Object[] args, java.lang.Class[] clazzes)
      Object creator.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RJavaTools

        public RJavaTools()
    • Method Detail

      • getClass

        public static java.lang.Class getClass​(java.lang.Class cl,
                                               java.lang.String name,
                                               boolean staticRequired)
        Returns an inner class of the class with the given simple name
        Parameters:
        cl - class
        name - simple name of the inner class
        staticRequired - boolean, if true the inner class is required to be static
      • getStaticClasses

        public static java.lang.Class[] getStaticClasses​(java.lang.Class cl)
        Returns the static inner classes of the class
        Parameters:
        cl - class
        Returns:
        an array of classes or null if cl does not have static inner classes
      • isStatic

        public static boolean isStatic​(java.lang.Class clazz)
        Indicates if a class is static
        Parameters:
        clazz - class
        Returns:
        true if the class is static
      • getStaticFields

        public static java.lang.reflect.Field[] getStaticFields​(java.lang.Class cl)
        Returns the static fields of the class
        Parameters:
        cl - class
        Returns:
        an array of static fields
      • getStaticMethods

        public static java.lang.reflect.Method[] getStaticMethods​(java.lang.Class cl)
        Returns the static methods of the class
        Parameters:
        cl - class
        Returns:
        an array of static fields
      • getFieldNames

        public static java.lang.String[] getFieldNames​(java.lang.Class cl,
                                                       boolean staticRequired)
        Returns the names of the fields of a given class
        Parameters:
        cl - class
        staticRequired - if true only static fields are returned
        Returns:
        the public (and maybe only static) names of the fields.
      • getMethodNames

        public static java.lang.String[] getMethodNames​(java.lang.Class cl,
                                                        boolean staticRequired)
        Returns the completion names of the methods of a given class. See the getMethodCompletionName method below
        Parameters:
        cl - class
        staticRequired - if true only static methods are returned
        Returns:
        the public (and maybe only static) names of the methods.
      • getCompletionName

        public static java.lang.String getCompletionName​(java.lang.reflect.Member m)
        Completion name of a member.

        For fields, it just returns the name of the fields

        For methods, this returns the name of the method plus a suffix that depends on the number of arguments of the method.

        The string "()" is added if the method has no arguments, and the string "(" is added if the method has one or more arguments.

      • isStatic

        public static boolean isStatic​(java.lang.reflect.Member member)
        Indicates if a member of a Class (field, method ) is static
        Parameters:
        member - class member
        Returns:
        true if the member is static
      • hasField

        public static boolean hasField​(java.lang.Object o,
                                       java.lang.String name)
        Checks if the class of the object has the given field. The getFields method of Class is used so only public fields are checked
        Parameters:
        o - object
        name - name of the field
        Returns:
        true if the class of o has the field name
      • hasClass

        public static boolean hasClass​(java.lang.Object o,
                                       java.lang.String name)
        Checks if the class of the object has the given inner class. The getClasses method of Class is used so only public classes are checked
        Parameters:
        o - object
        name - (simple) name of the inner class
        Returns:
        true if the class of o has the class name
      • classHasField

        public static boolean classHasField​(java.lang.Class cl,
                                            java.lang.String name,
                                            boolean staticRequired)
        Checks if the specified class has the given field. The getFields method of Class is used so only public fields are checked
        Parameters:
        cl - class object
        name - name of the field
        staticRequired - if true then the field is required to be static
        Returns:
        true if the class cl has the field name
      • classHasMethod

        public static boolean classHasMethod​(java.lang.Class cl,
                                             java.lang.String name,
                                             boolean staticRequired)
        Checks if the specified class has the given method. The getMethods method of Class is used so only public methods are checked
        Parameters:
        cl - class
        name - name of the method
        staticRequired - if true then the method is required to be static
        Returns:
        true if the class cl has the method name
      • classHasClass

        public static boolean classHasClass​(java.lang.Class cl,
                                            java.lang.String name,
                                            boolean staticRequired)
        Checks if the specified class has the given inner class. The getClasses method of Class is used so only public classes are checked
        Parameters:
        cl - class
        name - name of the inner class
        staticRequired - if true then the method is required to be static
        Returns:
        true if the class cl has the field name
      • hasMethod

        public static boolean hasMethod​(java.lang.Object o,
                                        java.lang.String name)
        Checks if the class of the object has the given method. The getMethods method of Class is used so only public methods are checked
        Parameters:
        o - object
        name - name of the method
        Returns:
        true if the class of o has the field name
      • newInstance

        public static java.lang.Object newInstance​(java.lang.Class o_clazz,
                                                   java.lang.Object[] args,
                                                   java.lang.Class[] clazzes)
                                            throws java.lang.Throwable
        Object creator. Find the best constructor based on the parameter classes and invoke newInstance on the resolved constructor
        Throws:
        java.lang.Throwable
      • invokeMethod

        public static java.lang.Object invokeMethod​(java.lang.Class o_clazz,
                                                    java.lang.Object o,
                                                    java.lang.String name,
                                                    java.lang.Object[] args,
                                                    java.lang.Class[] clazzes)
                                             throws java.lang.Throwable
        Invoke a method of a given class

        First the appropriate method is resolved by getMethod and then invokes the method

        Throws:
        java.lang.Throwable
      • getConstructor

        public static java.lang.reflect.Constructor getConstructor​(java.lang.Class o_clazz,
                                                                   java.lang.Class[] arg_clazz,
                                                                   boolean[] arg_is_null)
                                                            throws java.lang.SecurityException,
                                                                   java.lang.NoSuchMethodException
        Attempts to find the best-matching constructor of the class o_clazz with the parameter types arg_clazz
        Parameters:
        o_clazz - Class to look for a constructor
        arg_clazz - parameter types
        arg_is_null - indicates if each argument is null
        Returns:
        null if no constructor is found, or the constructor
        Throws:
        java.lang.SecurityException
        java.lang.NoSuchMethodException
      • getMethod

        public static java.lang.reflect.Method getMethod​(java.lang.Class o_clazz,
                                                         java.lang.String name,
                                                         java.lang.Class[] arg_clazz,
                                                         boolean[] arg_is_null)
                                                  throws java.lang.SecurityException,
                                                         java.lang.NoSuchMethodException
        Attempts to find the best-matching method of the class o_clazz with the method name name and arguments types defined by arg_clazz. The lookup is performed by finding the most specific methods that matches the supplied arguments (see also isMoreSpecific(java.lang.reflect.Method, java.lang.reflect.Method)).
        Parameters:
        o_clazz - class in which to look for the method
        name - method name
        arg_clazz - an array of classes defining the types of arguments
        arg_is_null - indicates if each argument is null
        Returns:
        null if no matching method could be found or the best matching method.
        Throws:
        java.lang.SecurityException
        java.lang.NoSuchMethodException
      • getClasses

        public static java.lang.Class[] getClasses​(java.lang.Object o)
        Returns the list of classes of the object
        Parameters:
        o - an Object
      • getClassNames

        public static java.lang.String[] getClassNames​(java.lang.Object o)
        Returns the list of class names of the object
        Parameters:
        o - an Object
      • getSimpleClassNames

        public static java.lang.String[] getSimpleClassNames​(java.lang.Object o,
                                                             boolean addConditionClasses)
        Returns the list of simple class names of the object
        Parameters:
        o - an Object
      • getFieldTypeName

        public static java.lang.String getFieldTypeName​(java.lang.Class cl,
                                                        java.lang.String field)
        Parameters:
        cl - class
        field - name of the field
        Returns:
        the class name of the field of the class (or null) if the class does not have the given field)