Wrapper (datový typ)

V objektově orientovaném programování je obal nad neobjektovým typem ( boxed type ) objektový datový typ určený k uložení hodnoty neobjektového typu. Například v Javě je třída Integernadmnožinou primitivního typu int.

Proč?

Autowrap (autoboxing) a autoexpand

V mnoha jazycích jsou obaly zahrnuty v syntaxi jazyka. Poté, pokud funkce vyžaduje Integernebo Object, automaticky „zabalí“ číslo do typu obálky. Například v kódu Java

void someFunc ( Object x ) {} someFunc ( 4 );

ekvivalentní ke kódu

someFunc ( Integer . valueOf ( 4 ));

To je to, co je automatické otáčení. Podobně funguje autoexpand v kódu

int x = 1 + celé číslo . hodnotaOf ( 2 );

Zde je typ Integerrozšířen zpět na int.

Java i C# Objectse nerozbalují zpět na int: následující kód tedy povede k chybě

Objekt x = celé číslo . hodnotaOf ( 2 ); int y = x ; // chyba přetypování