View Javadoc

1   package com.lexicalscope.fluentreflection;
2   
3   import java.lang.reflect.Member;
4   import java.util.List;
5   
6   /**
7    * Reflection information about a class member, such as a field or method.
8    *
9    * @author tim
10   */
11  public interface FluentMember extends FluentAnnotated {
12      /**
13       * Type that declares the member
14       *
15       * @return type that declares the member
16       */
17      FluentClass<?> declarer();
18  
19      /**
20       * The underlying member (class, field, constructor)
21       *
22       * @return the underlying member
23       */
24      Member member();
25  
26      /**
27       * The name of the member. Constructors are called &lt;init&gt;
28       *
29       * @return the name of the member
30       */
31      String name();
32  
33      /**
34       * The name of the member as a property name. Bean-style prefixes will be stripped from the member name.
35       *
36       * @return the name of the member as a property
37       */
38      String property();
39  
40      /**
41       * The number of arguments that the member takes when called
42       *
43       * @return the number of arguments that the member takes when called
44       */
45      int argCount();
46  
47      /**
48       * The types of the arguments used when the member is called
49       *
50       * @return the types of the arguments used when the member is called
51       */
52      List<FluentClass<?>> args();
53  
54      /**
55       * The type of the member (the type of the field, or the return type of the method)
56       *
57       * @return the type of the member
58       */
59      FluentClass<?> type();
60  
61      /**
62       * Call the member using the given arguments
63       *
64       * @param args the arguments to use in the call
65       *
66       * @return the value returned by the call
67       */
68      Object callRaw(Object... args);
69  
70      /**
71       * Call the member using the given arguments
72       *
73       * @param args the arguments to use in the call
74       *
75       * @return the value returned by the call wrapped in a fluent reflection wrapper
76       */
77      FluentObject<?> call(Object... args);
78  
79      /**
80       * Used to cast the result of a call on this member
81       *
82       * @param returnType the type expected as the result of the call
83       *
84       * @return object that can offers the call with the result cast to the given type
85       */
86      <T> FluentCall<T> as(Class<T> returnType);
87  
88      /**
89       * true iff the member is static
90       *
91       * @return true iff the member is static
92       */
93      boolean isStatic();
94  
95      /**
96       * true iff the member is final
97       *
98       * @return true iff the member is final
99       */
100     boolean isFinal();
101 
102     /**
103      * the visibility of the member
104      *
105      * @return the visibility of the member
106      */
107     Visibility visibility();
108 }