Я только что обнаружил, что при вызове Java из Matlab
object.method(arg1,...,argn)
эквивалентно
method(object, arg1,...,argn)
Проблема здесь в том, что у меня также есть method.m
, который выполняет некоторый перевод с Java на Matlab (например, конвертирует String[]
в ячейку строк). Мой method.m
выглядит как
function result = method(object, arg1,...argn)
intermediate = object.method(arg1,...argn);
result = translate(intermediate);
Что происходит, когда я вызываю method(object, arg1,...,argn)
, он выполняет прямой вызов Java, вместо того, чтобы использовать method.m
Исправить несложно, просто не используйте одно и то же имя метода для моих методов Java и моих файлов .m
. Но есть ли другой способ? Как я узнаю, какой метод будет вызываться с тем же именем? Есть ли способ убедиться, что я вызываю method.m
вместо метода Java? Легко обеспечить вызов метода Java, просто используйте синтаксис object.method
.
В качестве примечания также глупо то, что редактор .m
ссылается на method.m
в вызове method(object, arg1,...,argn)
, а при отладке вызывает метод Java.