Package org.eclipse.viatra.query.runtime.matchers.context.common

## Class JavaTransitiveInstancesKey

- java.lang.Object
- - org.eclipse.viatra.query.runtime.matchers.context.common.BaseInputKeyWrapper<java.lang.String>
  - - org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey

- All Implemented Interfaces:
    `IInputKey`

      public class JavaTransitiveInstancesKey
      extends BaseInputKeyWrapper<java.lang.String>

  Instance tuples are of form (x), where object x is an instance of the given Java class or its subclasses.

  Fine print 1: classes with the same name are considered equivalent. Can be instantiated with class name, even if the class itself is not loaded yet; but if the class is available, passing it in the constructor is beneficial to avoid classloading troubles.

  Fine print 2: primitive types (char, etc.) are transparently treated as their wrapper class (Character, etc.).

  Non-enumerable type, can only be checked.

  Stateless type (objects can't change their type)

- - ### Field Summary

    - ### Fields inherited from class org.eclipse.viatra.query.runtime.matchers.context.common.BaseInputKeyWrapper

      `wrappedKey`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JavaTransitiveInstancesKey​(java.lang.Class<?> instanceClass)` | Convenience constructor for the case where the JVM Class is available (already precompiled and loaded) in the context where this input key is built.
    `JavaTransitiveInstancesKey​(java.lang.String jvmClassName)` | Deprecated. Use `JavaTransitiveInstancesKey(Class)` or `JavaTransitiveInstancesKey(String, String)` instead
    `JavaTransitiveInstancesKey​(java.lang.String jvmClassName, java.lang.String javaClassName)` | Call this constructor only in contexts where the class itself is not available for loading, e.g.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.Class<?>` | `forceGetInstanceClass()` |
    `java.lang.Class<?>` | `forceGetWrapperInstanceClass()` |
    `int` | `getArity()` | The width of tuples in this relation.
    `java.lang.Class<?>` | `getInstanceClass()` |
    `java.lang.String` | `getPrettyPrintableName()` | A user-friendly name that can be shown on screen for debug purposes, included in exceptions, etc.
    `java.lang.String` | `getStringID()` | An internal string identifier that can be used to uniquely identify to input key (relevant for distributed applications).
    `java.lang.Class<?>` | `getWrapperInstanceClass()` |
    `boolean` | `isEnumerable()` | Returns true iff instance tuples of the key can be enumerated.
    `java.lang.String` | `toString()` |

    - ### Methods inherited from class org.eclipse.viatra.query.runtime.matchers.context.common.BaseInputKeyWrapper

      `equals, getWrappedKey, hashCode`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### JavaTransitiveInstancesKey

          public JavaTransitiveInstancesKey​(java.lang.String jvmClassName,
                                            java.lang.String javaClassName)

      Call this constructor only in contexts where the class itself is not available for loading, e.g. it has not yet been compiled.
      Parameters:
        `jvmClassName` - `Class.getName()`
        `javaClassName` - `Class.getCanonicalName()`
      Since:
        2.9

    - #### JavaTransitiveInstancesKey

          public JavaTransitiveInstancesKey​(java.lang.Class<?> instanceClass)

      Convenience constructor for the case where the JVM Class is available (already precompiled and loaded) in the context where this input key is built.
      Parameters:
        `instanceClass` - a non-null class definition

    - #### JavaTransitiveInstancesKey

          @Deprecated(since="2.9")
          public JavaTransitiveInstancesKey​(java.lang.String jvmClassName)

      Deprecated.
      Use `JavaTransitiveInstancesKey(Class)` or `JavaTransitiveInstancesKey(String, String)` instead
      Call this constructor only as a last resort, if the Java canonical name of the class is unavailable.

  - ### Method Detail

    - #### forceGetWrapperInstanceClass

          public java.lang.Class<?> forceGetWrapperInstanceClass()
                                                          throws java.lang.ClassNotFoundException

      Returns:
        non-null instance class, wrapped if primitive class
      Throws:
        `java.lang.ClassNotFoundException`

    - #### forceGetInstanceClass

          public java.lang.Class<?> forceGetInstanceClass()
                                                   throws java.lang.ClassNotFoundException

      Returns:
        non-null instance class, wrapped if primitive class
      Throws:
        `java.lang.ClassNotFoundException`

    - #### getWrapperInstanceClass

          public java.lang.Class<?> getWrapperInstanceClass()

      Returns:
        instance class, wrapped if primitive class, null if class cannot be loaded

    - #### getInstanceClass

          public java.lang.Class<?> getInstanceClass()

      Returns:
        instance class, wrapped if primitive class, null if class cannot be loaded

    - #### getPrettyPrintableName

          public java.lang.String getPrettyPrintableName()

      Description copied from interface: `IInputKey`
      A user-friendly name that can be shown on screen for debug purposes, included in exceptions, etc.

    - #### getStringID

          public java.lang.String getStringID()

      Description copied from interface: `IInputKey`
      An internal string identifier that can be used to uniquely identify to input key (relevant for distributed applications).

    - #### getArity

          public int getArity()

      Description copied from interface: `IInputKey`
      The width of tuples in this relation.

    - #### isEnumerable

          public boolean isEnumerable()

      Description copied from interface: `IInputKey`
      Returns true iff instance tuples of the key can be enumerated.

      If false, the runtime can only test tuple membership in the extensional relation identified by the key, but not enumerate member tuples in general.

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`