Type
A type is a set of values supporting a certain set of operations.
Closest Wikipedia entry: Type system
Misconceptions about Type37 documented Misconceptions
Check YourselfArrayElementTypeRepeats
The type of a multi-dimensional array is written as T[] T[] T[]
ArrayElementsUntyped
Elements of arrays are untyped
ArrayLengthPartOfType
The length of an array is part of its type
ArrayRankNotPartOfType
The rank of an array is not part of its type
CharNotNumeric
Char is not a numeric type
CompositeExpressionsUntyped
Expressions that consist of multiple parts have no type
ExpressionsDynamicallyTyped
One has to evaluate an expression to determine its type
IntegerDivisionToRational
Dividing two integers can produce a rational number
LargeIntegerLong
Large integer numbers have type long
MethodWithoutReturnType
A method declaration does not need to include a return type
NamedTypeParameter
To instantiate a generic type, for each type parameter one has to specify both the name and the type
NoCastIfSameSize
If a variable is at least as big (bit-width) as a value, then no cast is needed to a assign the value to the variable
NoFloatLiterals
There are no float literals
NoImplicitWidening
Smaller types are never automatically converted into bigger ones without an explicit cast
NoLongLiterals
There are no long literals
NumericToBooleanCoercion
Numeric types can be coerced to boolean
PrimitiveTypeParameter
Type parameters of generic types can be instantiated with primitive types
PrimitiveVariablesDynamicallyTyped
The type of a primitive variable depends on its value
RecursiveMethodImpliesRecursiveType
A class with a recursive method represents part of a recursive data structure
ReferenceToBooleanCoercion
Every reference type can be coerced to boolean
ReferenceToIntegerConversion
One can cast between references and ints
StaticCallPolymorphic
A static method call is dispatched polymorphically at runtime based on the argument types
SubtypeCompatibleWithSupertype
A variable of a subtype can reference an object of a supertype
SupertypeIncompatibleWithSubtype
A variable of a supertype cannot reference an object of a subtype
TargetTyping
The type of a numerical expression depends on the type expected by the surrounding context
UntypedVariables
Variable declarations don't need a type
UseOfSelfTypeImpliesRecursiveType
If a class has a method that has a local variable, parameter, or return value with the class as its type, the class is a recursive type
VoidMethodNotRecursive
A method with void return type can't be recursive
VoidMethodReturnsValue
A method with void return type can return a value