Wrapper Classes for Backward compatibility in Java

Posted by Casebash on Stack Overflow See other posts from Stack Overflow or by Casebash
Published on 2010-05-11T00:44:08Z Indexed on 2010/05/11 0:54 UTC
Read the original article Hit count: 270

Filed under:

There is an interesting article here on maintaing backwards compatibility for Java. In the wrapper class section, I can't actually understand what the wrapper class accomplishes. In the following code from MyApp, WrapNewClass.checkAvailable() could be replaced by Class.forName("NewClass").

static {
    try {
        WrapNewClass.checkAvailable();
        mNewClassAvailable = true;
    } catch (Throwable ex) {
        mNewClassAvailable = false;
    }
}

Consider when NewClass is unavailable. In the code where we use the wrapper (see below), all we have done is replace a class that doesn't exist, with one that exists, but which can't be compiled as it uses a class that doesn't exist.

public void diddle() {
    if (mNewClassAvailable) {
        WrapNewClass.setGlobalDiv(4);
        WrapNewClass wnc = new WrapNewClass(40);
        System.out.println("newer API is available - " + wnc.doStuff(10));
    }else {
        System.out.println("newer API not available");
    }
}

Can anyone explain why this makes a difference? I assume it has something to do with how Java compiles code - which I don't know much about.

© Stack Overflow or respective owner

Related posts about java