Passing javaArray to java method, error: No method 'getArray' with matching signature found for class

1 visualización (últimos 30 días)
On Matlab Part:
Test = Test_abc; % Refer to Class Test_abc
data = javaArray('java.lang.Float',2,3);
for i=1:2
for j = 1:3
data(i,j)=java.lang.Float(i+j);
end
end
list_index = 2; % another int number to be passed to java method
Test.getArray(list_index-1, data);
On Java Part:
public class Test_abc{
...
public void getArray(int number, float[][] Mat_data)
{
System.out.println("Java accepts the value" + Mat_data[0][0] + ".");
System.out.println("Java accepts the value" + Mat_data[1][1] + ".");
}
...
}
Then the error
No method 'getArray' with matching signature found for class Test_abc
would pop up. What's strange is that if one normal matlab matrix element is passed, like " Test.getArray(list_index-1, X(1,1)); ", where X = [1,2; 3,4], there's no problem. I'm most sure that the problem lies in the conversation:
Test.getArray(list_index-1, data);
public void getArray(int number, float[][] Mat_data);
Why can't I pass a javaArray from matlab to java? Thank you!

Respuesta aceptada

Malcolm Lidierth
Malcolm Lidierth el 23 de Oct. de 2012
Editada: Malcolm Lidierth el 23 de Oct. de 2012
float (with no capital letter) is a primitive data type in Java
Float (with capital) is a 'boxed' primitive - a true Java object.
You are passing a Float array to getArray but specifying float in the method's signature.
For float, just use a MATLAB 'single' array.

Más respuestas (0)

Categorías

Más información sobre Call Java from MATLAB en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by