以下函数是Java接口的核心。它们提供了一种创建Java对象、获取和设置其数据字段以及调用Java方法的方法,这些方法将结果返回给Octave。
jobj =
javaObject (classname)
¶jobj =
javaObject (classname, arg1, …)
¶创建类的Java对象classsname,通过使用参数调用类构造函数arg1, …
下面的第一个示例创建了一个未初始化的对象,而第二个示例为构造函数提供了一个初始参数。
x=javaObject(“java.lang.StringBuffer”)x=javaObject(“java.lang.StringBuffer”,“Initial string”)
详见: javaMethod, javaArray.
jary =
javaArray (classname, sz)
¶jary =
javaArray (classname, m, n, …)
¶创建大小为的Java数组sz具有类元素类的名称.
类的名称可以是表示类的Java对象,也可以是包含完全限定类名的字符串。对象的大小也可以用单独的整数参数指定m, n等
生成的数组未初始化。如果类的名称是引用类型,或默认值(通常为0),如果类的名称是一个基元类型。
示例代码:
jary=javaArray(“java.lang.String”,2,2);jary(1,1)=“你好”;
详见: javaObject.
Octave中有许多不同的变量类型,但只有一种通过创建javaObject
可以使用Java函数。在将Java与未知对象一起使用之前,可以使用检查类型isjava
.
tf =
isjava (x)
¶如果返回truex是一个Java对象。
详见: 类, 类型信息, isa, javaObject.
一旦创建了一个对象,就很自然地会查找该对象具有哪些字段,并读取(获取)和写入(设置)这些字段。
在Octave中字段名
结构体的函数被重载以返回Java对象的字段。例如
dobj=javaObject(“java.lang.Double”,pi);字段名(dobj)⇒{[1,1]=公共静态最终双精度java.lang.double.POSITIVE_INFINITY[1,2]=公共静态最后双精度java.lang.double.NEGATIVE_INFINITIY[1,3]=公共静态终精度java.lang.double.NaN[1,4]=公共静态末精度java.lang_double.MAX_VALUE[1,5]=公共静电最终双精度java.lang.double.MIN_NORMAL[1,6]=公共静电最后双精度java.long.double_MIN_VALUE[1,7]=公共静态终端int java.lang.Ddouble.MAX_EXPONENT[1,8]=公共静态终极int java.lang.ddouble.MIN _EXPONENT[1,9]=公共静态最终int java.lang.double.SIZE[1,10]=公共静态最后int java.lang.Class java.lang.Ddouble.TYPE}
物体与结构体的类比被带入阅读和写作物体field。若要读取字段,将使用“”对对象进行索引.结构体中的运算符。这是读取字段的首选方法,但Octave也提供了一个读取字段的函数接口java_get
。下面显示了这两种样式的示例。
dobj=javaObject(“java.lang.Double”,pi);dobj。最大值(_V)⇒ 1.7977e+308java_get(“java.lang.Float”,“MAX_VALUE”)⇒ 3.4028e+38
val =
java_get (obj, name)
¶获取字段的值name的obj.
对于静态场,obj可以是表示相应类的完全限定名称的字符串。
什么时候obj是一个常规的Java对象,类似索引的结构体可以用作快捷语法。例如,以下两个语句是等效的
java_get(x,“field1”)x.field1
详见: java_set, javaMethod, javaObject.
obj =
java_set (obj, name, val)
¶设置字段的值name的obj到val.
对于静态场,obj可以是表示相应Java类的完全限定名称的字符串。
什么时候obj是一个常规的Java对象,类似索引的结构体可以用作快捷语法。例如,以下两个语句是等效的
java_set(x,“field1”,val)x.field1=val
详见: java_get, javaMethod, javaObject.
要查看对象可以调用哪些函数,请使用method
。例如,使用以前创建的dobj:
方法(dobj)⇒类java.lang.Double的方法:boolean等于(java.lang.Object)java.lang.String toString(Double)java.lang.String to String()。。。
调用具有相同结构体索引运算符的对象的方法.isused。Octave还提供了一个函数接口,用于通过调用另一个对象的方法javaMethod
。下面显示了显示两种样式的示例。
dobj=javaObject(“java.lang.Double”,pi);dobj.equals(3)⇒ 0javaMethod(“等于”,dobj,pi)⇒ 1.
ret =
javaMethod (methodname, obj)
¶ret =
javaMethod (methodname, obj, arg1, …)
¶调用方法方法名称在Java对象上obj与参数arg1, ….
对于静态方法,obj可以是表示相应类的完全限定名称的字符串。
什么时候obj是一个常规的Java对象,类似索引的结构体可以用作快捷语法。例如,以下两个语句是等效的
ret=javaMethod(“method1”,x,1.0,“字符串”)ret=x.method1(1.0,“一个字符串”)
javaMethod
返回方法调用的结果。
详见: 方法, javaObject.
以下三个函数用于显示和修改Java虚拟机使用的类路径。这与Octave的完全不同路径
变量,JVM使用它来查找要执行的正确代码。
()
¶dpath =
javaclasspath ()
¶[dpath, spath] =
javaclasspath ()
¶clspath =
javaclasspath (what)
¶以字符串数组的形式返回Java虚拟机的类路径。
如果在没有输入的情况下调用:
如果使用单个输入参数调用什么:
动态
返回动态类路径。
静止的
返回静态类路径。
全部的
在单个cellstr中返回静态和动态类路径。
详见: javaaddpath, javarmpath.
(clspath)
¶(clspath1, …)
¶({clspath1, …})
¶(…, "-end")
¶添加clspath到Java虚拟机的动态类路径的开头。
clspath可以是其中的目录类找到文件,或者罐子包含Java类的文件。可以通过指定额外的参数或使用字符串的cellarray来同时添加多个路径。
如果最后的参数是终止
,将新元素附加到当前类路径的末尾。
详见: javarmpath, javaclasspath.
(clspath)
¶(clspath1, …)
¶({clspath1, …})
¶去除clspath从Java虚拟机的动态类路径。
clspath可以是其中的目录类找到文件,或者罐子包含Java类的文件。通过指定额外的参数或使用字符串的元胞数组,可以同时删除多个路径。
详见: javaaddpath, javaclasspath.
以下函数提供Octave和Java虚拟机之间接口的信息和控制。
msg =
javachk (feature)
¶msg =
javachk (feature, caller)
¶检查Java是否存在特色在当前会话中。如果特色不可用、未启用或无法识别。
可能识别的函数包括:
awt
GUI的抽象窗口工具包。
桌面
交互式桌面正在运行。
jvm
Java虚拟机。
摆动
用于轻量级GUI的Swing组件。
如果特色不支持,带有字段的标量结构体message
和标识符
返回。该fieldmessage
包含一条错误消息,其中提到特色以及指定的可选用户呼叫者。此结构体可用于传递到错误
作用
如果特色支持并且可用,则返回一个带有字段的空结构体数组message
和标识符
.
javachk
确定Octave会话中是否有特定的Java函数可用。此函数是为脚本提供的,这些脚本可以根据Java或特定Java运行时函数的可用性来更改其行为。
兼容性说明:该函数桌面
永远不可用,因为Octave没有基于Java的桌面。
tf =
usejava (feature)
¶如果Java元素特色可用。
可能的函数包括:
awt
GUI的抽象窗口工具包。
桌面
交互式桌面正在运行。
jvm
Java虚拟机。
摆动
用于轻量级GUI的Swing组件。
使用java
确定Octave会话中是否有特定的Java函数可用。此函数是为脚本提供的,这些脚本可以根据Java的可用性更改其行为。函数桌面
总是返回错误的
因为Octave没有基于Java的数据sktop。如果Octave是使用Java接口编译的,并且安装了Java,则可能会提供其他函数。
详见: javachk.
()
¶jmem =
javamem ()
¶显示Java虚拟机(JVM)的当前内存使用情况,并运行内存收集器。
当没有给出返回参数时,信息会打印到屏幕上。否则,输出元胞数组jmem包含最大内存、总内存和可用内存(以字节为单位)。
所有基于Java的子程序都在JVM的共享内存池中运行,这是JVM语句的专用内存,与计算机的总内存(包括物理RAM和硬盘上的虚拟内存/交换空间)分开。
可以使用文件配置最大允许内存使用率java.端口。此文件所在的目录从环境变量决定OctaveJAVA_DIR
。如果未设置,则为目录,其中javaaddpath.m而是使用resident(通常Octave主机
/份额/Octave/Octave版本
/m/java/).
java.端口是一个纯文本文件,每行有一个参数。默认的初始内存大小和默认的最大内存大小(两者都依赖于系统)可以被重写,如下所示:
-Xms64m
-Xmx512米
(在本例中以兆字节为单位)。如果系统的可用物理内存有限或出现Java内存错误,您可以根据自己的需求调整这些值。
总内存
是操作系统当前赋值给JVM的内容,取决于实际和活动内存的使用情况。可用内存
不言自明。在运行基于Java的Octave函数期间,从于Java自己的清理和操作系统的内存管理,Total和Free内存量会有所不同。
val =
java_matrix_autoconversion ()
¶old_val =
java_matrix_autoconversion (new_val)
¶old_val =
java_matrix_autoconversion (new_val, "local")
¶查询或设置内部变量,该变量控制Java数组是否自动转换为Octave矩阵。
默认值为false。
当从具有的函数内部调用时地方的
参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。
val =
java_unsigned_autoconversion ()
¶old_val =
java_unsigned_autoconversion (new_val)
¶old_val =
java_unsigned_autoconversion (new_val, "local")
¶查询或设置内部变量,该变量控制整数类在以下情况下的转换方式java_matrix_autoversion
已启用。
启用时,Byte或Integer类的Java数组将分别转换为uint8或uint32类的矩阵。默认值为true。
当从具有的函数内部调用时地方的
参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号