Hi all,
I might have found an interop issue with adjustable arrays. First create an adjustable array with some "empty unfilled space".
(defparameter *arr* (let ((x (make-array 0 :fill-pointer 0 :adjustable t :element-type 'base-char))) (vector-push-extend #\a x) (vector-push-extend #\b x) (vector-push-extend #\c x) (vector-push-extend #\d x) x))
Pass the array into Java and copy it back into Lisp.
CL-USER> (jcall "getText" (jnew "javax.swing.JButton" *arr*)) "abcd^@^@^@" CL-USER> (jcall "getText" (jnew "javax.swing.JButton" (copy-seq *arr*))) "abcd"
I've hand edited the above -- the ^@ character is actually a #\Null of course.
More examples:
CL-USER> (jnew "java.lang.String" *arr*) #<java.lang.String abcd^@^@^@ {F10A53}>
Yong.