The standard way is to cast Child
to Wrapper
in order to access its hidden field.
Simple example:
public class Test {
public static class A {
protected String field = "I'm class A";
}
public static class B extends A {
protected String field = "I'm class B";
}
/**
* @param args
*/
public static void main(String[] args) {
B b = new B();
System.out.println(b.field); // prints "I'm class B"
System.out.println(((A) b).field); //prints "I'm class A"
}
}
But why do you hide the field? This leads to programming errors and makes your code hard to read. I would suggest accessing the field with getters and setters. In fact, i suggest declaring abstract getters and setters in Wrapper
in order to force subclasses to provide a corresponding field.
Best regards,
sam