Вы можете использовать встроенный (), чтобы заставить Matlab использовать свои собственные функции length (), Numberl () или любые другие, игнорируя метод класса Java с тем же именем.Вызов isscalar () или numbersl () будет работать большую часть времени, потому что Java-классы не склонны определять методы с этими именами.Но если они это сделают, вы получите метод Java и столкнетесь с той же проблемой, что и с length ().Использование встроенной функции () будет более общим и работает независимо от того, какие методы используются в классах Java.
>> foo = java.lang.String('foo');
>> builtin('length', [foo foo])
ans =
2
>> builtin('length', [foo])
ans =
1
>> length([foo])
ans =
3
>>
Вы можете обернуть его так:
function out = mlength(x)
%MLENGTH Array length, ignoring Java length() methods
% Test for isjava to avoid ignoring overriden length() methods in Matlab objects
if isjava(x)
out = builtin('length', x);
else
out = length(x);
end