Interface FacetAccessor

  • All Known Implementing Classes:
    FacetAccessorDelegateImpl, FacetAccessorImpl

    public interface FacetAccessor
    Interface to access facets of an object. A facet is an instance of a particular class. It may be implemented in a variety of ways, including inheritance, delegation, or dynamic construction on demand.
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      <T> void addFacet​(T obj)
      Add a facet to the object.
      <T> T facet​(java.lang.Class<T> cls)
      Access the Facet of Class T from the object.
      java.util.Collection<java.lang.Object> facets()
      Return a list of all facets on this object.
      java.lang.Object get​(java.lang.reflect.Field field)
      Fetch the value of the field from whichever facet contains the field.
      java.lang.Object invoke​(java.lang.reflect.Method method, java.lang.Object... args)
      Invoke method on the appropriate facet of this object, that is, on the facet corresponding to method.getDeclaringClass.
      void removeFacet​(java.lang.Class<?> cls)
      Remove the facet (if any) of the given type.
      void set​(java.lang.reflect.Field field, java.lang.Object value)  
    • Method Detail

      • facet

        <T> T facet​(java.lang.Class<T> cls)
        Access the Facet of Class T from the object.
        Type Parameters:
        T - The Type (as a Class) of the Facet.
        Parameters:
        cls - The class of the facet.
        Returns:
        Instance of cls for this facet. Null if no such facet is available.
      • addFacet

        <T> void addFacet​(T obj)
        Add a facet to the object. The type T must not already be available as a facet.
        Type Parameters:
        T -
        Parameters:
        obj -
      • removeFacet

        void removeFacet​(java.lang.Class<?> cls)
        Remove the facet (if any) of the given type.
        Parameters:
        cls - The class of the facet to remove.
      • facets

        java.util.Collection<java.lang.Object> facets()
        Return a list of all facets on this object.
        Returns:
        Collection of all facets.
      • invoke

        java.lang.Object invoke​(java.lang.reflect.Method method,
                                java.lang.Object... args)
        Invoke method on the appropriate facet of this object, that is, on the facet corresponding to method.getDeclaringClass.
        Parameters:
        method - The method to invoke.
        args - Arguments to the method.
        Returns:
        restult of the invoke call.
      • get

        java.lang.Object get​(java.lang.reflect.Field field)
        Fetch the value of the field from whichever facet contains the field. Read-only because that's all that the intended application needs.
        Parameters:
        field - The field to access
        Returns:
        The value of the field
      • set

        void set​(java.lang.reflect.Field field,
                 java.lang.Object value)