I have found a rather hacky workaround.
The class contains both a ClassA and InterfaceI reference as follows:
private ClassA mItemClassA;
private InterfaceI mItemInterfaceI;
The set method then looks like this:
public void setVaraible(ClassA item){
assert (item instanceof InterfaceI);
mItemClassA = item;
mItemInterfaceI = (InterfaceI) item;
}
Other variations of this could be throwing an exception, returning false, etc if the item is not an instance of InterfaceI
Other methods in the class can then call functions from both InterfaceI and ClassA using mItemClassA and mItemInterfaceI.
I am not going to implement a get method for now, but if I did there would likely have to be a version to get the interface and a version to get the class.