I am developing an application in JNI which is supposed to return a Vector of C++ class objects.
This way, from the start, your vector lives in Java. You use Java methods to add/update/delete elements in this vector from native side. You can add/use a "<init>" method of your Java class to instantiate your Java Vector.
I had done something similar (retrieving n-dim Java String Array). Any thing other than primitive datatype of Java is an object in native side.