サーバー (Java)/クライアント (Android) アプリケーションがあり、サーバー側では、要求に応じて、ObjectOutputStream を介して 3 種類のオブジェクトを送信します。
オブジェクトの種類は次のとおりです。
Java サーバー側では:
//My serializable classA
MySerializableClassA classA = MySerializableClassA(A, B, C);
out.WriteObject(classA);
//Arraylist of my serializable classB
ArrayList<MySerializableClassB> classB = new ArrayList<MySerializableClassB>();
classB.add(new MySerializableClassB(E, F, G, H));
out.writeObject(classB);
//Arraylist of my serializable classC
ArrayList<MySerializableClassC> classC = new ArrayList<MySerializableClassC>();
classC.add(new MySerializableClassC(Y, X, Z));
out.writeObject(classC);
Android クライアント側では次のようになります。
Object obj
private MySerializableClassA classA;
private ArrayList<MySerializableClassB> arrayClassB;
private ArrayList<MySerializableClassC> arrayClassC;
//Here i get the object received, i store it in a Object
in = new ObjectInputStream(_socket.getInputStream());
obj = in.readObject();
//And I check of which class is an instance
if(obj instanceof MySerializableClassA){
classA = (MySerializableClassA)obj;
//Do a specific action
}
Object から ArrayList へのキャストがチェックされていないため、問題はここから始まります。
//I check if object is instanceof ArrayList...
else if(obj instanceof ArrayList){
//and here a need to identify the type of the object inside the arraylist , so...
if(the object inside is an instanceof MySerializableClassB){
arrayClassB = (ArrayList<MySerializableClassB>)obj;
//Do a specific action
}
else if(the object inside is an instanceof MySerializableClassC){
arrayClassC = (ArrayList<MySerializableClassC>)obj;
//Do a specific action
}
}
私の質問は次のとおりです。どのタイプの costum 配列リストにオブジェクトが含まれているかを特定する方法はありますか? または、この場合、どのタイプのオブジェクトに私の配列リストが含まれているかを特定するには?
また、classB と classC を 1 つのクラスにマージするオプションもありますが、上記で尋ねたことを実行できれば、より良いでしょう。
私がやりたいことを行うための他の方法の助けや提案は大歓迎です、ありがとう。