Package org.spongepowered.asm.mixin

## Enum MixinEnvironment.CompatibilityLevel

- java.lang.Object
- - java.lang.Enum<MixinEnvironment.CompatibilityLevel>
  - - org.spongepowered.asm.mixin.MixinEnvironment.CompatibilityLevel

All Implemented Interfaces:
  `java.io.Serializable`, `java.lang.Comparable<MixinEnvironment.CompatibilityLevel>`

Enclosing class:
  MixinEnvironment

    public static enum MixinEnvironment.CompatibilityLevel
    extends java.lang.Enum<MixinEnvironment.CompatibilityLevel>

Operational compatibility level for the mixin subsystem

### Enum Constant Summary

Enum Constants
`JAVA_10` Java 10 or above is required
`JAVA_11` Java 11 or above is required
`JAVA_12` Java 12 or above is required
`JAVA_13` Java 13 or above is required
`JAVA_14` Java 14 or above is required.
`JAVA_15` Java 15 or above is required.
`JAVA_16` Java 16 or above is required
`JAVA_17` Java 17 or above is required
`JAVA_18` Java 18 or above is required
`JAVA_19` Java 19 or above is required
`JAVA_20` Java 20 or above is required
`JAVA_21` Java 21 or above is required
`JAVA_22` Java 22 or above is required
`JAVA_23` Java 23 or above is required
`JAVA_24` Java 23 or above is required
`JAVA_25` Java 25 or above is required
`JAVA_6` Java 6 (1.6) or above is required
`JAVA_7` Java 7 (1.7) or above is required
`JAVA_8` Java 8 (1.8) or above is required
`JAVA_9` Java 9 or above is required

### Field Summary

Fields
`static MixinEnvironment.CompatibilityLevel` `DEFAULT` Default compatibility level to use if not specified by the service
`static MixinEnvironment.CompatibilityLevel` `MAX_SUPPORTED` Maximum compatibility level actually supported.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`boolean` `canElevateTo​(MixinEnvironment.CompatibilityLevel level)` Get whether this level can be elevated to the specified level
`boolean` `canSupport​(MixinEnvironment.CompatibilityLevel level)` True if this level can support the specified level
`int` `classVersion()` Deprecated. Use getClassVersion
`static MixinEnvironment.CompatibilityLevel` `forClassVersion​(int version)`
`int` `getClassMajorVersion()` Get the major class version expected at this compatibility level
`int` `getClassVersion()` Class version expected at this compatibility level
`int` `getLanguageFeatures()` Get all supported language features
`static MixinEnvironment.CompatibilityLevel` `getMaxEffective()` Return the maximum compatibility level which is actually effective in the current runtime, taking into account the current JRE and ASM versions
`boolean` `isAtLeast​(MixinEnvironment.CompatibilityLevel level)` Get whether this level is the same or greater than the specified level
`boolean` `isLessThan​(MixinEnvironment.CompatibilityLevel level)` Get whether this level is less than the specified level
`static MixinEnvironment.CompatibilityLevel` `requiredFor​(int languageFeatures)` Return the minimum language level required to support the specified language feature(s).
`boolean` `supports​(int languageFeatures)` Get whether the specified `LanguageFeatures` is supported by this runtime.
`boolean` `supportsMethodsInInterfaces()` Deprecated. Use `supports(int)` instead
`static MixinEnvironment.CompatibilityLevel` `valueOf​(java.lang.String name)` Returns the enum constant of this type with the specified name.
`static MixinEnvironment.CompatibilityLevel[]` `values()` Returns an array containing the constants of this enum type, in the order they are declared.

### Methods inherited from class java.lang.Enum

`clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

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

`getClass, notify, notifyAll, wait, wait, wait`

### Enum Constant Detail

#### JAVA_6

    public static final MixinEnvironment.CompatibilityLevel JAVA_6

Java 6 (1.6) or above is required

#### JAVA_7

    public static final MixinEnvironment.CompatibilityLevel JAVA_7

Java 7 (1.7) or above is required

#### JAVA_8

    public static final MixinEnvironment.CompatibilityLevel JAVA_8

Java 8 (1.8) or above is required

#### JAVA_9

    public static final MixinEnvironment.CompatibilityLevel JAVA_9

Java 9 or above is required

#### JAVA_10

    public static final MixinEnvironment.CompatibilityLevel JAVA_10

Java 10 or above is required

#### JAVA_11

    public static final MixinEnvironment.CompatibilityLevel JAVA_11

Java 11 or above is required

#### JAVA_12

    public static final MixinEnvironment.CompatibilityLevel JAVA_12

Java 12 or above is required

#### JAVA_13

    public static final MixinEnvironment.CompatibilityLevel JAVA_13

Java 13 or above is required

#### JAVA_14

    public static final MixinEnvironment.CompatibilityLevel JAVA_14

Java 14 or above is required. Records are a preview feature in this release.

#### JAVA_15

    public static final MixinEnvironment.CompatibilityLevel JAVA_15

Java 15 or above is required. Records and sealed classes are preview features in this release.

#### JAVA_16

    public static final MixinEnvironment.CompatibilityLevel JAVA_16

Java 16 or above is required

#### JAVA_17

    public static final MixinEnvironment.CompatibilityLevel JAVA_17

Java 17 or above is required

#### JAVA_18

    public static final MixinEnvironment.CompatibilityLevel JAVA_18

Java 18 or above is required

#### JAVA_19

    public static final MixinEnvironment.CompatibilityLevel JAVA_19

Java 19 or above is required

#### JAVA_20

    public static final MixinEnvironment.CompatibilityLevel JAVA_20

Java 20 or above is required

#### JAVA_21

    public static final MixinEnvironment.CompatibilityLevel JAVA_21

Java 21 or above is required

#### JAVA_22

    public static final MixinEnvironment.CompatibilityLevel JAVA_22

Java 22 or above is required

#### JAVA_23

    public static final MixinEnvironment.CompatibilityLevel JAVA_23

Java 23 or above is required

#### JAVA_24

    public static final MixinEnvironment.CompatibilityLevel JAVA_24

Java 23 or above is required

#### JAVA_25

    public static final MixinEnvironment.CompatibilityLevel JAVA_25

Java 25 or above is required

### Field Detail

#### DEFAULT

    public static MixinEnvironment.CompatibilityLevel DEFAULT

Default compatibility level to use if not specified by the service

#### MAX_SUPPORTED

    public static MixinEnvironment.CompatibilityLevel MAX_SUPPORTED

Maximum compatibility level actually supported. Other compatibility levels might exist but we don't actually have any internal code in place which supports those features. This is mainly used to indicate that mixin classes compiled with newer JDKs might have bytecode-level class features that this version of mixin doesn't understand, even when the current ASM or JRE do.

This is particularly important for the case where a config declares a higher version (eg. JAVA_14) which has been added to the enum but no code actually exists within Mixin as a library to handle language features from that version. In other words adding values to this enum doesn't magically add support for language features, and this field should point to the highest known supported version regardless of other known versions.

This comment mainly added to avoid stuff in the future like PR #500 which demonstrates that the nature of compatibility levels in mixin are not understood that well.

### Method Detail

#### values

    public static MixinEnvironment.CompatibilityLevel[] values()

Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:

    for (MixinEnvironment.CompatibilityLevel c : MixinEnvironment.CompatibilityLevel.values())
        System.out.println(c);

Returns:
  an array containing the constants of this enum type, in the order they are declared

#### valueOf

    public static MixinEnvironment.CompatibilityLevel valueOf​(java.lang.String name)

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Parameters:
  `name` - the name of the enum constant to be returned.
Returns:
  the enum constant with the specified name
Throws:
  `java.lang.IllegalArgumentException` - if this enum type has no constant with the specified name
  `java.lang.NullPointerException` - if the argument is null

#### classVersion

    @Deprecated
    public int classVersion()

Deprecated.
Use getClassVersion
Class version expected at this compatibility level

#### getClassVersion

    public int getClassVersion()

Class version expected at this compatibility level

#### getClassMajorVersion

    public int getClassMajorVersion()

Get the major class version expected at this compatibility level

#### getLanguageFeatures

    public int getLanguageFeatures()

Get all supported language features

#### supportsMethodsInInterfaces

    @Deprecated
    public boolean supportsMethodsInInterfaces()

Deprecated.
Use `supports(int)` instead
Get whether this environment supports non-abstract methods in interfaces, true in Java 1.8 and above

#### supports

    public boolean supports​(int languageFeatures)

Get whether the specified `LanguageFeatures` is supported by this runtime.

Parameters:
  `languageFeatures` - language feature (or features) to check
Returns:
  true if all specified language features are supported

#### isAtLeast

    public boolean isAtLeast​(MixinEnvironment.CompatibilityLevel level)

Get whether this level is the same or greater than the specified level

Parameters:
  `level` - level to compare to
Returns:
  true if this level is equal or higher the supplied level

#### isLessThan

    public boolean isLessThan​(MixinEnvironment.CompatibilityLevel level)

Get whether this level is less than the specified level

Parameters:
  `level` - level to compare to
Returns:
  true if this level is less than the supplied level

#### canElevateTo

    public boolean canElevateTo​(MixinEnvironment.CompatibilityLevel level)

Get whether this level can be elevated to the specified level

Parameters:
  `level` - desired level
Returns:
  true if this level supports elevation

#### canSupport

    public boolean canSupport​(MixinEnvironment.CompatibilityLevel level)

True if this level can support the specified level

Parameters:
  `level` - desired level
Returns:
  true if the other level can be elevated to this level

#### requiredFor

    public static MixinEnvironment.CompatibilityLevel requiredFor​(int languageFeatures)

Return the minimum language level required to support the specified language feature(s). Returns `null` if no compatibility level available can support the requested language features.

Parameters:
  `languageFeatures` - Language feature(s) to check for
Returns:
  Lowest compatibility level which supports the requested language feature, or null if no levels support the requested feature

#### getMaxEffective

    public static MixinEnvironment.CompatibilityLevel getMaxEffective()

Return the maximum compatibility level which is actually effective in the current runtime, taking into account the current JRE and ASM versions

#### forClassVersion

    public static MixinEnvironment.CompatibilityLevel forClassVersion​(int version)