Interface Type<T>

Type Parameters:
T - the Java type associated with this logical type
All Superinterfaces:
Copyable<Type<T>>
All Known Implementing Classes:
TypeWrapper

public interface Type<T> extends Copyable<Type<T>>
Represents an engine's internal logical type, which is assigned to every fact before it is inserted into the session's working memory. A fact's association with a logical type can be explicit, via the SessionOps.insertAs(String, Object) method, or implicit, through the fact's Java type.

Each logical type is uniquely identified by its logical name, retrievable via the getName() method, and is associated with a specific Java type, obtainable through the getJavaClass() method. This mechanism allows for facts of the same Java type to be differentiated based on their logical names.

Each type inherits public fields and getters from its associated Java class, while also supporting the declaration of custom fields for use in rule conditions.

  • Method Details

    • getName

      String getName()
      Returns logical name of the type
      Returns:
      logical name
    • resolveJavaType

      @Deprecated Class<T> resolveJavaType()
      Deprecated.
      use the getJavaClass() method instead
      Returns:
      the resolved Java Class associated with the type.
    • getJavaClass

      Class<T> getJavaClass()

      There can be only one Type with the given name, but there could be many types associated with a specific Java Class. This method returns the associated Java type.

      Returns:
      the Java Class associated with the type.
    • getJavaType

      @Deprecated String getJavaType()
      Deprecated.
      use the getJavaClass() method instead

      There can be only one Type with the given name, but there could be many types associated with a specific Java Class. This method returns the associated Java type.

      Returns:
      name of the Java Class associated with the type.
    • getField

      TypeField getField(String name)

      Returns a declared field with the given name. If no such field was explicitly declared, an attempt will be made to resolve the respective field/getter of the declared Java class. If no such field or getter is found, the method will throw IllegalArgumentException

      Empty field name has a special meaning of the "this" value, i.e. such field's values represent the type's instances themself.

      Parameters:
      name - field name or empty string if the field denotes the type's this value
      Returns:
      declared or resolved field
      Throws:
      IllegalArgumentException - if no field with such name could be found or resolved
    • declareField

      <V> TypeField declareField(String name, Class<V> type, Function<T,V> function)

      Field declaration with a Function as value reader.

      Type Parameters:
      V - field value generic type
      Parameters:
      name - field name
      type - field value class
      function - the function that will be used to read field's value
      Returns:
      a newly created field or an existing one if already declared/resolved
    • declareIntField

      default TypeField declareIntField(String name, ToIntFunction<T> function)

      Method declares a primitive int field.

      Parameters:
      name - field name
      function - field functional interface
      Returns:
      a newly created field or an existing one if already declared/resolved
    • declareLongField

      default TypeField declareLongField(String name, ToLongFunction<T> function)

      Method declares a primitive long field.

      Parameters:
      name - field name
      function - field functional interface
      Returns:
      a newly created field or an existing one if already declared/resolved
    • declareDoubleField

      default TypeField declareDoubleField(String name, ToDoubleFunction<T> function)

      Method declares a primitive double field.

      Parameters:
      name - field name
      function - field functional interface
      Returns:
      a newly created field or an existing one if already declared/resolved
    • declareBooleanField

      default TypeField declareBooleanField(String name, Predicate<T> function)

      Method declares a primitive boolean field.

      Parameters:
      name - field name
      function - field functional interface
      Returns:
      a newly created field or an existing one if already declared/resolved
    • logicalNameOf

      static String logicalNameOf(Class<?> cl)