1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package net.sf.morph.reflect;
17  
18  /**
19   * <p>
20   * An extension of the Reflector interface that defines extra methods. All
21   * methods specified in this interface can be easily implemented using just the
22   * methods in the Reflector interface. Thus, if you are defining your own
23   * reflector you should implement only the Reflector interface. If you extend
24   * from {@link net.sf.morph.reflect.reflectors.BaseReflector}, your reflector
25   * will implement this inteface automatically.
26   * </p>
27   * 
28   * <p>
29   * If you don't want to extend from <code>BaseReflector</code>, you can still
30   * easily expose this interface by using the
31   * {@link net.sf.morph.reflect.reflectors.ReflectorDecorator}.
32   * </p>
33   * 
34   * @author Matt Sgarlata
35   * @since Dec 13, 2004
36   */
37  public interface DecoratedReflector extends Reflector {
38  
39  	/**
40  	 * Indicates whether the given type is reflectable by this reflector.
41  	 * 
42  	 * @param reflectedType
43  	 *            the type to test
44  	 * @return <code>true</code>, if this reflector can reflect the given
45  	 *         class or <br>
46  	 *         <code>false</code>, if this reflector cannot reflect the given
47  	 *         class
48  	 * @throws ReflectionException
49  	 *             if an error occurrs
50  	 */
51  	public boolean isReflectable(Class reflectedType)
52  		throws ReflectionException;
53  
54  }