What is the meaning of >: Null <: in Scala?

scala

Solution

Keyword `type` is for type alias declaration, just like `val` and `def` are for value and method declaration. In this case it's an abstract type alias with constraints, so it's a type member of some `trait` or `class` - type alias in local scope can't be abstract and can't have constraints.

Type `Ident` is a subtype of `AnyRef` and supertype of `Null`.

AnyRef

`AnyRef` is an ancestor of all reference types, all types except `Int`, `Long`, `Char` and so on (Java primitives).

Null

`Null` is subtype of all "nullable" types. In fact it's a subtype of all reference types.

Since all `AnyRef` are nullable the only additional constraint from `>: Null` is that `Ident` is not `Nothing`.

See Scala’s type hierarchy:

Problem

I searched a lot, but I didn't find anything, What is the meaning of this type of `type declaration` in Scala? ``` type Ident >: Null <: AnyRef ```

Original source