この Stackoverflowの投稿に従おうとしましたが、達成したい目的には役立っていませんでした。Javaで達成できるか知りたいです。問題文はこちら。Java リフレクション、Haskel のどちらかなどを調べようとしましたが、2 つの異なるオブジェクトを持つことになります。
私は2種類のオブジェクトを持っています。
com.mobilesecuritycard.openmobileapi.Session msc_session;
org.simalliance.openmobileapi.Session sim_session
上記の 2 つのオブジェクトのいずれかを受け入れるメソッドが必要です。
例えば
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 デバイスでは異なるセキュア エレメントにアクセスします。したがって、異なるオブジェクトに対して 2 つの異なる runOperation() メソッドを記述したくありません。より正確に言うと、オブジェクト タイプを別のオブジェクトにキャストすることは可能ですか。これについてはよくわかりません。任意のポインタまたはヘルプに感謝します。私が達成したいことを明確にしたことを願っています。
PS: 質問を明確にするためにいくつかのコード スニペットを提供しているだけなので、構文は無視してください。