SAS9新体验:在DATA STEP中使用JAVA对象
2008-01-05 20:08:37 来源:WEB开发网定义JAVA对象
其由DECLARE语法支持:
declare javaobj j("类名");
这样将定义和存储一个对象的实例在标量J中, JAVAOBJ会将JAVA CLASSPATH下的someJavaClass实例化呈现出来
典型的,为确保实例化J只一次,可以这样做
if _N_ = 1 then do;
declare javaobj j("someJavaClass");
end;
JAVAOBJ也能使用_new_ 语法进行实例化
declare javaobj j;
j = _NEW_ javaobj("someJavaClass");
构造参数
JAVAOBJ构造一个对象的实例的第一个参数是JAVA类的名字,如建立一个hashtable对象
declare javaobj h("java/util/Hashtable");
其他相应的参数也可以依次传给java class本身
如建立一个容量为100、系数为0.8的hashtable对象,我们应该封装java/util/Hashtable类且在DATA STEP中实例化它
import java.util.*;
public class mhash extends Hashtable
{
mhash(double size, double load)
{
super((int)size, (float)load);
}
}
declare javaobj h("mhash", 100, .8);
封装类是必须的,因为DATA STEP中的数字类型对应JAVA中的double
访问对象属性
一旦对象被实例化,JAVAOBJ是容许用户用方法访问和修改对象属性,如设想我们由这样一个类
import java.util.*;
import java.lang.*;
public class ttest
{
public int i;
public double d;
public String s;
}
我们建立这个类的实例,用set/get访问对象属性在下列程序中
data _null_;
dcl javaobj j("ttest");
length val 8;
length str $20;
j.setIntField("i", 100);
j.setDoubleField("d", 3.14159);
j.setStringField("s", "abc");
j.getIntField("i", val);
put val=;
j.getDoubleField("d", val);
put val=;
j.getStringField("s", str);
put str=;
run;
set/get方法的第一个参数是属性名,第二个参数是get/set的变量或值
访问对象方法
可以把上面的类改造成这样
import java.util.*;
import java.lang.*;
public class ttest
{
public int i;
public double d;
public String s;
public int im()
{
return i;
}
public String sm()
{
return s;
}
public double dm()
{
return d;
}
}
我们可以通过javaobj方法调用访问java 值,如
data _null_;
dcl javaobj j("ttest");
length val 8;
length str $20;
j.setIntField("i", 100);
j.setDoubleField("d", 3.14159);
j.setStringField("s", "abc");
j.callIntMethod("im", val);
put val=;
j.callDoubleMethod("dm", val);
put val=;
j.callStringMethod("sm", str);
put str=;
run;
注:方法的返回值总是被指定为最后一个参数,例如,我们有个返回为double的方法
public double m(double x, double y)
{
return x * y;
}
那么在DATA STEP中调用该方法用下列语法
length val1 val2 ret 8;
j.callDoubleMethod("m", val1, val2, ret);
访问类的属性和方法
- ››体验全新战略RPG 千橡《上古之光》今日开启封测
- ››体验Discuz! X1.5搜索新变革 挖掘内容更方便
- ››体验俄罗斯引擎制作的次世代游戏
- ››体验简单分析 如何做好用户体验
- ››体验后 魔兽玩家对剑网3的感觉和建议
- ››体验Photoshop CS5新增的HDR色调调整
- ››Data Web Services:访问IBM数据库服务器的新方式...
- ››体验 iphone 的越狱和解码功能
- ››datagridview checkbox控件
- ››体验 Jazz,体验 Rational Team Concert Express
- ››DataGridView表尾统计控件3
- ››DataReader与DataSet的区别
更多精彩
赞助商链接