• Home
    • View
    • Login
    This page
    • Normal
    • Export PDF
    • Export Word
    • Attachments
    • Page Information

    Loading...
  1. Dashboard
  2. Valhalla
  3. Main
  4. L-World
  5. LW2

Page History

Versions Compared

Old Version 10

changes.mady.by.user David Simms

Saved on Jul 12, 2019

compared with

New Version Current

changes.mady.by.user Mandy Chung

Saved on Aug 16, 2019

  • Previous Change: Difference between versions 9 and 10
  • View Page History

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Requires source level >= JDK14 (since LW2, the prototype is based on mainline JDK, whose version string is JDK 14 at the time of writing)
  • A class declaration of inline type is made by using the "inline class" modifier, or (for IDE syntax parsing convenience) with "@__inline__" annotation (since LW2)
    • Interfaces, annotation types, enums can not be inline types
    • Top level, inner, nested, local classes may be inline types. Inline types may declare inner, nested, local types
    • Inline Types are implicitly final, so cannot be abstract
  • Inline Types may not declare an explicit super class (except Object). They implicitly extend java.lang.Object akin to enums, annotation types and interfaces
  • Inline Types may declare explicit interfaces
  • Inline Types constructors may not pass the "this" handle until all instance fields are definitely assigned.
  • All instance fields of an inline class are implicitly final
  • "Indirect" projections of inline types via the "?" operator (since LW2)
    • E.g. the projection of Point is Point?
    • Point? IS also an inline type which allows null for backward compatibility
    • maintains type of a field,  array element, or generic parametric argument, but they may be null
    • Point is a subtype of Point?
    • cast between inline type and indirect type
    • Is implicitly a "NullableType"
    • enables compatibility with current generics via erasure to null-object object references
    • Arrays subtyping relationships: InlineType[] <: IndirectType[] <: Object[] <: Object
      • Widening conversions may be carried out from in the order above
      • Narrowing from an array of IndirectType to an InlineType is not possible.
      • This array covariance enables compatibility with existing API, especially generic type erasure
  • Inline types may not declare fields of its own type directly.  If A and B are inline classes, A may not contain a field B if B contains a field A.
    • There is a method to do this "indirectly" using the "?" operator, but it's value is still final. (since LW2
  • java.lang.Object methods:
    • javac automatically generates hashCode, equals, longHashCode and toString computed solely from the instance's state and not from its identity
    • javac does not clone(), finalize(), wait*), notify*() on inline type receivers
  • javac allows comparison of inline type using ==, != (since LW2)
    • By default this implies a test in the instance state (i.e. field by field "substitutability" test), as inline types have no identity (i.e. not a reference test).
  • Inline Types can not be assigned null, null can not be cast to or compared with inline types
    • With the exception of an "indirect" reference using the "?" operator. (since LW2)
  • Indirect Types cannot be type arguments in generic type parameterizations, type witnesses in generic method invocations, wildcard bounds
    • With the exception of an "indirect" reference using the "?" operator. (since LW2) 
  • Type migration, including partial recompilation is not supported.

...

Overview
Content Tools
ThemeBuilder

Terms of Use
• License: GPLv2
• Privacy • Trademarks • Contact Us

Powered by a free Atlassian Confluence Open Source Project License granted to https://www.atlassian.com/software/views/opensource-community-additional-license-offer. Evaluate Confluence today.

  • Kolekti ThemeBuilder Powered by Atlassian Confluence 8.5.23
  • Kolekti ThemeBuilder printed.by.atlassian.confluence
  • Report a bug
  • Atlassian News
Atlassian
Kolekti ThemeBuilder EngineAtlassian Confluence
{"serverDuration": 267, "requestCorrelationId": "55f2b2f45c614b73"}