使用结构体数组创建 Java 电话簿应用程序
在此示例中,您将创建一个 Java® 包,该包调用 MATLAB® 函数来修改结构体数组并实现电话簿应用程序。
文件
| MATLAB 函数 | makephone.m |
| MATLAB 函数位置 | |
| Java 代码位置 | |
过程
将 MATLAB 附带的
PhoneExample文件夹复制到您的工作文件夹:copyfile(fullfile(matlabroot,'toolbox','javabuilder','Examples','PhoneExample'),'PhoneExample')
在 MATLAB 命令提示符下,导航到工作文件夹中的新
PhoneExample\PhoneDemoComp子文件夹。检查
makephone.m函数。function book = makephone(friends) book = friends; for i = 1:numel(friends) numberStr = num2str(book(i).phone); book(i).external = ['(508) 555-' numberStr]; end
该函数将结构体数组作为输入,对其进行修改,并将修改后的数组作为输出。
使用以下信息构建 Java 包,可通过 Java 包编译器应用或
compiler.build.javaPackage进行操作:字段 值 Java 包名称 phonebookdemo类名 phonebook要编译的文件 makephone.m例如,如果您使用的是
compiler.build.javaPackage,请输入:buildResults = compiler.build.javaPackage('makephone.m', ... 'PackageName','phonebookdemo', ... 'ClassName','phonebook');
有关详细信息,请参阅生成 Java 包并编译 Java 应用程序中的说明。
为访问 MATLAB 函数的应用程序编写源代码。
此示例的示例应用程序位于
PhoneExample\PhoneDemoJavaApp\getphone.java中。程序执行以下操作:
创建一个结构体数组,使用
MWStructArray来表示示例电话簿数据。将绘图仪类实例化为
thePhonebook对象:thePhonebook = new phonebook();调用
makephone方法通过添加附加字段来创建结构的修改副本:result = thePhonebook.makephone(1, friends);使用
try-catch模块来捕获并处理任何异常。
在 MATLAB 中,导航到
PhoneExample\PhoneDemoJavaApp文件夹。将生成的
phonebookdemo.jar包复制到此文件夹中。例如,如果您使用了
compiler.build.javaPackage,请输入:copyfile(fullfile('..','PhoneDemoComp','phonebookdemojavaPackage','phonebookdemo.jar'))
在命令提示符窗口中,
cd到PhoneDemoJavaApp文件夹。使用
getphone编译javac应用程序。在 Windows® 上,键入:
javac -classpath "matlabroot\toolbox\javabuilder\jar\javabuilder.jar";.\phonebookdemo.jar getphone.java在 UNIX® 上,键入:
javac -classpath "matlabroot/toolbox/javabuilder/jar/javabuilder.jar":./phonebookdemo.jar getphone.java
将
替换为 MATLAB 或 MATLAB Runtime 安装文件夹的路径。例如,在 Linux® 上,路径可能为matlabroot/usr/local/MATLAB/R2025a。运行
getphone应用程序。在 Windows 上,键入:
java -classpath .;"matlabroot\toolbox\javabuilder\jar\javabuilder.jar";.\phonebookdemo.jar getphone在 UNIX 上,键入:
java -classpath .:"matlabroot/toolbox/javabuilder/jar/javabuilder.jar":./phonebookdemo.jar getphone注意
如果您在 Mac 64 位平台上运行该应用程序,则必须在 Java 命令中添加
-d64标志。
getphone程序显示以下输出:Friends: 2x2 struct array with fields: name phone Result: 2x2 struct array with fields: name phone external Result record 2: Mary Smith 3912 (508) 555-3912 Entire structure: Number of Elements: 4 Dimensions: 2-by-2 Number of Fields: 3 Standard MATLAB view: 2x2 struct array with fields: name phone external Walking structure: Element 1 name: Jordan Robert phone: 3386 external: (508) 555-3386 Element 2 name: Mary Smith phone: 3912 external: (508) 555-3912 Element 3 name: Stacy Flora phone: 3238 external: (508) 555-3238 Element 4 name: Harry Alpert phone: 3077 external: (508) 555-3077
另请参阅
compiler.build.javaPackage | Java 包编译器
