wrapper

Wrapper


Motivation


public class ThoughtSender() {
    public native void send(Object o);

    public static void main(String... args) {
        ThoughtSender sender = new ThoughtSender();
        sender.send("Sleep");
        sender.send(new OutOfMemoryError());
        sender.send(42);
    }

Integer


public final class Integer extends Number implements ... {
    private final int value;

    public int intValue() {
        return value;
    }

    public static Integer valueOf(int i) {
        ...
        return new Integer(i);
    }
Autoboxing

Integer wrapper = 3;
int primitive = wrapper;
    

uml wrapper

Kein Upcasting!

byte -> short -> int -> long -> float -> double
          char  -^
    

double primitive = 3.14f; ✔️
Double wrapper = Float.valueOf(3.14f); 🚫
Long wrapper = 3; 🚫

caching/equals


Integer.valueOf(3) == Integer.valueOf(3)          -> true
Integer.valueOf(128) == Integer.valueOf(128)      -> false
Integer.valueOf(128).equals(Integer.valueOf(128)) -> true

für alle Wrapper in [-128, 127]

equals👍