function
[jObjects, jClasses, classnames] = java_objects_from_varargin(varargin),
jArrayList = java.util.ArrayList();
for
ii = 1:nargin,
jArrayList.add(varargin{ii});
end
jObjects = jArrayList.toArray();
if
nargout < 2,
return
;
end
jC_Class = java.lang.Class.forName(
'java.lang.Class'
);
jM_getClass = jC_Class.getMethod(
'getClass'
, []);
jClasses = java.lang.reflect.Array.newInstance(jC_Class, nargin);
for
ii = 1:nargin,
if
~isempty(jObjects(ii)),
if
numel(varargin{ii}) == 1,
matlab_class = {
'logical'
,
'char'
,
'int8'
,
'uint8'
,
'int16'
,
'uint16'
,
'int32'
,
'uint32'
,
'int64'
,
'uint64'
,
'single'
,
'double'
};
java_class = {
'Boolean'
,
'Character'
,
'Byte'
,
'Byte'
,
'Short'
,
'Short'
,
'Integer'
,
'Integer'
,
'Long'
,
'Long'
,
'Float'
,
'Double'
};
B_match = strcmp(matlab_class, class(varargin{ii}));
if
any(B_match),
java_wrapper_classname = [
'java.lang.'
java_class{B_match}];
jClasses(ii) = eval([java_wrapper_classname
'.TYPE'
]);
continue
;
end
end
jClasses(ii) = jM_getClass.invoke(jObjects(ii), []);
end
end
if
nargout < 3,
return
;
end
classnames = cell(nargin, 1);
for
ii = 1:nargin,
if
~isempty(jClasses(ii)),
classnames{ii} = char(jClasses(ii).getName());
end
end
end