Passing Matrix List to Java Method ,error:No method 'list_method' with matching signature found for class

Hi,
On Matlab Part :
matrix =[22,11,33,44,22,44,22,54]; % 1-by-8 matrix
if true
% code
import edu.lipreading.*;
import java.util.Vector;
training = MainMethod;
training.list_method(matrix);
end
On Java Part
if true
% code
public void list_method(List<Integer> points){
System.out.println("Welcome to List Method");
}
end
Note : When I have run my matlab code i got error like No method 'list_method' with matching signature found for class 'edu.lipreading.MainMethod'. // edu.lipreading Package Name ,MainMethod Class name

댓글 수: 1

I have already asked look @ Passing List ,still awaiting for result .if any body know please let me know Thanks.

댓글을 달려면 로그인하십시오.

 채택된 답변

Try
public void list_method(double[] points){
...
}
Note that MATLAB vectors/matrices contain doubles by default and are passed to Java as a copy.

댓글 수: 3

Thank's for reply me , my java code i need add list Items like
on Java Code :
public void list_method(List<Integer> points){
Sample recordedSample = new Sample ();
recordedSample.getMatrix().add(points);
}
on Matlab I have multiple dynamic matrices list values so i wanna need to add list method .
Example : matrix =[33,5,45,2,4,2,1,1]
[3,2,2,5,3,2,2,2]; etc.
When I have change from java method argument List to double again i have got error below like
if true
% code
matrix
[12,34,113,34,61,1,61,66]
No method 'list_method' with matching signature found for class
'edu.lipreading.MainMethod'.
end
When I have change from java method argument List to double again and again i have got error below like . Please reply me any idea ? thanks . please review previous forum for understanding ?
if true
% code
matrix
[12,34,113,34,61,1,61,66]
No method 'list_method' with matching signature found for class
'edu.lipreading.MainMethod'.
end

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

OK, if you are stuck with a List java-side, you need to create a list MATLAB-side.
In MATLAB:
  • Create a concrete list class
list=java.util.ArrayList()
  • Add the elements to it
for k=1:length(matrix)
list.add(int32(matrix(k)));
end
  • Check its size:
>> list.size()
ans =
8
Note that the "<Integer>" annotation in your Java code is only relevant at compile time. Casting the MATLAB variable to int32 above ensures that the ArrayList will add a java.lang.Integer to the list at run-time. You could do that explicitly using
list.add(java.lang.Integer.valueOf(matrix(k)));
instead.
Within MATLAB you can access the list elements using "get":
e.g.
list.get(0)
Note that when MATLAB receives the returned Integer, it creates a MATLAB primitive double from it:
>> class(list.get(0))
ans =
double
Java will not - it will use the java.lang.Integer instance in the list.

댓글 수: 1

Thanks for reply me below i have mentioned my full code , u can easily solve my issues.
On Matlab code-side
matrix =[33,122,3,2,2,3,2,4];
outsprintf=sprintf('%d,',matrix);
outsprintf=sprintf('[%s\b]',outsprintf);
disp(outsprintf);
here result is [33,122,3,2,2,3,2,4] like getting so this values i need to pass java method arguments List<Integer> points.
Note 2:About Java Class Please Look at my Attached file .

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

제품

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by