You need to implement Adapter using its semantics, and hence, may have to modify the Adaptee implementation such that it returns array items one by one by keeping track of what it has returned earlier.
Below is indicative implementation, I have not compiled or tested it, so take it for logic it represents.
public class MyAdaptee implements MyInt {
private MyObj[] buffer = new MyObj[0];
private indexOfLastBufferedItemReturned = 0;
@Override
public MyObj read() {
if (indexOfLastBufferedItemReturned >= buffer.length) {
buffer = readTheInput(); //use existing implementation here
indexOfLastBufferedItemReturned = 0;
}
return buffer[indexOfLastBufferedItemReturned++];
}
public MyObj[] readTheInput() {
// implementation here
}
}