正しい位置にそれのデータを取得するために内部クラスを初期化する - デコード()メソッド。それを解析した後、私はShenzhenRecoderクラスでxmlファイルを構築しています。しかし、私は、ShenzhenDecoderクラス - assignStatusFlagMaptoRecorder()でデータを設定した後、statusFlagクラスからデータを取り出すという問題に直面しています。シンセデコーダー内のStatusFlagクラスを初期化して、データをcreateXMLFromRecord()
にどこでどのように取得する必要がありますか? getStatusflag()がnullであるため、getStatusflag()およびgetStausFlag()の例外としてgetLowBattery()がnullになるためです。のJava:私はShenzhenDecoderクラスのメッセージを解析しています
ShenzhenDecoder
パブリッククラスShenzhenDecoder {
ShenzhenRecord record = null;
LinkedHashMap<String, String> statusFlagMap = new LinkedHashMap<String, String>();
public ShenzhenRecord decode(final byte[] data) {
this.record = new ShenzhenRecord();
byte[] imeiArray = Arrays.copyOfRange(data, 1, 16);
String imei = new String(imeiArray, "UTF-8");
System.out.println("IMEI: " + imei);
this.record.setImei(imei);
}
private void assignStatusFlagMaptoRecorder() {
StatusFlag statusFlagRecord = this.record.new StatusFlag();
for (Entry<String, String> entry : this.statusFlagMap.entrySet()) {
String key = entry.getKey();
switch (key) {
case "lowBattery":
statusFlagRecord.setLowBattery(entry.getValue());
break;
case "spare1BitFirstByte":
statusFlagRecord.setSpare1BitFirstByte(entry.getValue());
break;
case "lbs":
statusFlagRecord.setLbs(entry.getValue());
break;
case "gmsBlindArea":
statusFlagRecord.setGmsBlindArea(entry.getValue());
break;
}
}
}
}
Shenzhenrecord