我尝试关注这个 Stackoverflow帖子,但它并没有帮助我实现我想要实现的目标。我想知道它是否可以在 Java 中实现。这是问题陈述。我试图研究 Java 反射、Haskel Either 等,但它最终有两个不同的对象。
我有两种类型的对象。
com.mobilesecuritycard.openmobileapi.Session msc_session;
org.simalliance.openmobileapi.Session sim_session
我想要一个接受上面给出的两个对象中的任何一个的方法。
例如
public void runOperation(Object activeSession) {
activeSession.openLogicalChannel(APPLET_AID);
-- do the rest of operations ---
}
我想使用该功能,如下所示
if(isSetSIMSessionTrue()){
Log.i(LOG_TAG, "Using SIM Session as its True");
sim_session = getSim_session();
runOperation((org.simalliance.openmobileapi.Session) sim_session);
} else{
Log.i(LOG_TAG, "Using MSC Session as its false");
msc_session = getMSCSession();
runOperation((com.mobilesecuritycard.openmobileapi.Session) msc_session);
}
我什至可以使用接收正确的对象类
String classNameToBeLoaded = activeSession.getClass().getName();
但仍然无法将对象属性获取到 activeSession 对象。
有没有办法将任何一个会话对象传递给 runOperation 方法,并且只使用 activeSession 来完成其余的操作。由于这两个对象具有相同的方法和功能,但在 android 设备上访问不同的安全元素。所以,我不想为不同的对象编写两个不同的 runOperation() 方法。更准确地说,是否可以将一个对象类型转换为另一个对象。我不确定这一点。任何指示或帮助将不胜感激。我希望,我清楚地表明了我想要实现的目标。
PS:请忽略语法,因为我只是提供一些代码片段来说明我的问题。