r01f.reflection.fluent
Class TypeReflection

java.lang.Object
  extended by r01f.reflection.fluent.TypeReflection

public final class TypeReflection
extends java.lang.Object

Class Loading. Usage example:

   // Loads the class 'org.republic.Jedi'
   Class jediType = Reflection.type("org.republic.Jedi").load();
 
   // Loads the class 'org.republic.Jedi' as 'org.republic.Person' (Jedi extends Person)
   Class jediType = Reflection.type("org.republic.Jedi").loadAs(Person.class);
 
   // Loads the class 'org.republic.Jedi' using a custom class loader
   Class jediType = Reflection.type("org.republic.Jedi").withClassLoader(myClassLoader).load();
 


Field Summary
private  java.lang.String _className
           
 
Constructor Summary
private TypeReflection(java.lang.String className)
          Constructor
 
Method Summary
 java.lang.Class<?> load()
          Loads the class with the name specified in this type, using this class' ClassLoader.
<T> java.lang.Class<? extends T>
loadAs(java.lang.Class<T> type)
          Loads the class with the name specified in this type, as the given type, using this class' ClassLoader.
(package private) static TypeReflection startTypeAccess(java.lang.String className)
          Creates a new TypeReflection: the starting point of the fluent interface for loading classes dynamically.
private  java.lang.ClassLoader thisClassLoader()
          Obtiene el classLoader local
 TypeInvoker withClassLoader(java.lang.ClassLoader classLoader)
          Specifies the ClassLoader to use to load the class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_className

private final java.lang.String _className
Constructor Detail

TypeReflection

private TypeReflection(java.lang.String className)
Constructor

Parameters:
className -
Method Detail

startTypeAccess

static TypeReflection startTypeAccess(java.lang.String className)
Creates a new TypeReflection: the starting point of the fluent interface for loading classes dynamically.

Parameters:
className - the name of the class to load.
Returns:
the created Type.
Throws:
java.lang.NullPointerException - if the given name is null.
java.lang.IllegalArgumentException - if the given name is empty.

withClassLoader

public TypeInvoker withClassLoader(java.lang.ClassLoader classLoader)
Specifies the ClassLoader to use to load the class. Example:
   Class jediType = Reflection.type("org.republic.Jedi").withClassLoader(myClassLoader).load();
 

Parameters:
classLoader - the given ClassLoader.
Returns:
an object responsible of loading a class with the given ClassLoader.
Throws:
java.lang.NullPointerException - if the given ClassLoader is null.

load

public java.lang.Class<?> load()
Loads the class with the name specified in this type, using this class' ClassLoader.

Returns:
the loaded class.
Throws:
ReflectionError - wrapping any error that occurred during class loading.

loadAs

public <T> java.lang.Class<? extends T> loadAs(java.lang.Class<T> type)
Loads the class with the name specified in this type, as the given type, using this class' ClassLoader. The following example shows how to use this method. Let's assume that we have the class Jedi that extends the class Person:
   Class jediType = Reflection.type("org.republic.Jedi").loadAs(Person.class);
 

Type Parameters:
T - the generic type of the type.
Parameters:
type - the given type.
Returns:
the loaded class.
Throws:
java.lang.NullPointerException - if the given type is null.
ReflectionError - wrapping any error that occurred during class loading.

thisClassLoader

private java.lang.ClassLoader thisClassLoader()
Obtiene el classLoader local

Returns: