Наследование в Java 8 статично и монотонно. Пример не статичности - в prototype-oriented языках (Java Script), пример не монотонности - C++ с закрытым наследованием, экспертные системы.
В Java 8 "двухэтажная система": классы + метаклассы. Пример нульэтажонй системы - JavaScript, Одноэтажной - ?, трехэтажной - ?Scala?, бесконечно этажной - ?. [The Art of Metaobject protocol]
The StackMapTable Attribute
Arrays are covariant + generics are invariant = @SafeVarargs needed, [JLS]
heap pollution
Big theme: annotations for type cheching
- weeking: @SupressWarning() ({"unchecked, ???"})
- stronging: @NotNull, @Nullable, ???
Цель книги описать систему типов языка Java 8. А именно: детально разобраться, что является типом в Java, описать алгебраические структуры определенные поверх на типов, описать операции на типах (конструктор типа, ???). Попутно будет приведена литература по типам, наиболее интересные примеры. вы сможете подготовиться к собеседованию.
Не нарушает ли рефлексия статической типизации?
Кто чей предок: List, List<Object>, List<?>, List<? extends Object>?
List<Number> и List<Double> - это два разных типа?
Равен ли List<?> к List<?> ?
Что такое type inference, wildcard capturing, ???
Равен ли User - User (class loading)?
Java 8 Type System
Intro
Type vs Class
Static vs Dynamic types
Strong vs Weak types
Nominative vs Intersection/Compositional vs Structural types
Nominal: ?
Structural: one idiom
Universal vs Existentional types
Universal: generic types
Existentional: raw types, wildcards
Compiletime vs Runtime types
Primitime vs Reference vs Null types
Null type is a child of every reference type
System F vs ? vs
OOP
Classes
Inner classes
Anonimous inner classes
Nested classes
Anonimous nested classes
Interfaces
Enums
Arrays
Broken array types: co-varianve/contra-variance
Methods
Overloading
Overriding
Static methods
Fields
Замещение полей суперкласса полями субкласса
x
x
Generics
Java generics as F-sub (System F with bounded quantification)
Java generics as universal types
Recursive and mutualy recursive generic declarations
Raw types and wildcards as existential types
Intersection types
Dict: bloch: type parameter, generic class or interface, Generic classes and interfaces are collectively known as generic types, Each generic type defines a set of parameterized types, which consist of the class or interface name followed by an angle-bracketed list of actual type parameters corresponding to the generic type’s formal type parameters [JLS, 4.4, 4.5]. each generic type defines a raw type,
Type inference
Constructors
Static meyhods
Raw types
Subtyping and Parametric polymorphism
Covariance and Contravariance
Bounded quantification
Wildcard
Unbounded wildcard types [bloch 113]
Annotations
Lambda
AOP
Semantics
операционная семантика языка
денотационная семантика языка
В Java 8 "двухэтажная система": классы + метаклассы. Пример нульэтажонй системы - JavaScript, Одноэтажной - ?, трехэтажной - ?Scala?, бесконечно этажной - ?. [The Art of Metaobject protocol]
The StackMapTable Attribute
Arrays are covariant + generics are invariant = @SafeVarargs needed, [JLS]
heap pollution
Big theme: annotations for type cheching
- weeking: @SupressWarning() ({"unchecked, ???"})
- stronging: @NotNull, @Nullable, ???
Цель книги описать систему типов языка Java 8. А именно: детально разобраться, что является типом в Java, описать алгебраические структуры определенные поверх на типов, описать операции на типах (конструктор типа, ???). Попутно будет приведена литература по типам, наиболее интересные примеры. вы сможете подготовиться к собеседованию.
Не нарушает ли рефлексия статической типизации?
Кто чей предок: List, List<Object>, List<?>, List<? extends Object>?
List<Number> и List<Double> - это два разных типа?
Равен ли List<?> к List<?> ?
Что такое type inference, wildcard capturing, ???
Равен ли User - User (class loading)?
Java 8 Type System
Intro
Type vs Class
Static vs Dynamic types
Strong vs Weak types
Nominative vs Intersection/Compositional vs Structural types
Nominal: ?
Structural: one idiom
Universal vs Existentional types
Universal: generic types
Existentional: raw types, wildcards
Compiletime vs Runtime types
Primitime vs Reference vs Null types
Null type is a child of every reference type
System F vs ? vs
OOP
Classes
Inner classes
Anonimous inner classes
Nested classes
Anonimous nested classes
Interfaces
Enums
Arrays
Broken array types: co-varianve/contra-variance
Methods
Overloading
Overriding
Static methods
Fields
Замещение полей суперкласса полями субкласса
x
x
Generics
Java generics as F-sub (System F with bounded quantification)
Java generics as universal types
Recursive and mutualy recursive generic declarations
Raw types and wildcards as existential types
Intersection types
Dict: bloch: type parameter, generic class or interface, Generic classes and interfaces are collectively known as generic types, Each generic type defines a set of parameterized types, which consist of the class or interface name followed by an angle-bracketed list of actual type parameters corresponding to the generic type’s formal type parameters [JLS, 4.4, 4.5]. each generic type defines a raw type,
Type inference
Constructors
Static meyhods
Raw types
Subtyping and Parametric polymorphism
Covariance and Contravariance
Bounded quantification
Wildcard
Unbounded wildcard types [bloch 113]
Annotations
Lambda
AOP
Semantics
операционная семантика языка
денотационная семантика языка