我为我的java卡写了两个名为 App1 和 App2 的简单applet,如下所示:
App1:
public class App1 extends Applet {
private App1() {
}
public static void install(byte bArray[], short bOffset, byte bLength)
throws ISOException {
new App1().register();
}
public void process(APDU arg0) throws ISOException {
if(selectingApplet()){
return;
}
//I want to call "ThisMethod()" of App2 here
}
}
App2:
public class App2 extends Applet {
private App2() {
}
public static void install(byte bArray[], short bOffset, byte bLength)
throws ISOException {
new App2().register();
}
public void process(APDU arg0) throws ISOException {
}
public void ThisMethod(){
ISOException.throwIt((short)0x9001);
}
}
正如我在App1程序中指出的那样(作为评论)我想在App1的ThisMethod
方法中调用App2的Process
方法。据我所知,我必须实现Shareable
接口。但我对它有点困惑:
问题:
1-我必须在两个小程序中实现此方法吗?或者我需要在App1或App2中实现它?
2-如果App1和App2在一个软件包中或两个单独的软件包中,是不是有任何改变?
3-我需要Shareable
接口来共享阵列吗?或者仅仅是为了共享方法?
答案 0 :(得分:2)
不,您只需创建一个扩展可共享的接口,然后您的app2必须实现该接口。
没关系。
是的,如果你想分享你的数组,你还需要实施Shareable
但是,在使用从其他applet实例共享的方法/对象之前,必须先在App1中存储接口实例。你可以通过
来做到这一点AID aid = JCSystem.lookupAid({App2 AID byte array}, {offset}, {length}); // provide the instance AID of App2
{yourInterface} app2Instance = ({yourInterface})JCSystem.getAppletShareableInterfaceObject(aid, (byte)0);
然后使用app2Instance
访问共享方法/对象