当我尝试为外部化添加位置时,我收到以下错误消息。请建议如何外部化Location对象。请给我建议。参见用于存储和外部化代码的代码:
addOfflineCommand("location", latitude, longitude, time1);
latitude - double data type;
longitude - double data type;
time1 - long data type;
private void addOfflineCommand(String name, Object... args) {
List<OfflineCommand> l_noAppt = (List<OfflineCommand>)
Storage.getInstance().readObject(appName + user + "-offlineCommandsLocEnc");
l_noAppt.add(new OfflineCommand(name, args));
}请查看下面的错误消息:
[EDT] 0:4:37,444 - Exception: java.io.IOException - Object type not supported: com.codename1.location.Location value: altitude = 1000.0
latitude40.714353
longtitude-74.00597299999998
direction0.0
timeStamp1529000278457
velocity50.0
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readUTF(DataInputStream.java:609)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at com.codename1.io.Util.readObject(Util.java:562)
at com.codename1.io.Util.readObject(Util.java:595)
at com.X.Xmobile.server.OfflineCommand.internalize(OfflineCommand.java:40)
at com.codename1.io.Util.readObject(Util.java:689)
at com.codename1.io.Util.readObject(Util.java:664)
at com.codename1.io.Storage.readObject(Storage.java:261)
at com.X.Xmobile.server.ServerImpl.addOfflineCommand(ServerImpl.java:1165)
at com.X.Xmobile.server.ServerImpl.finishActivity(ServerImpl.java:1504)
at com.X.Xmobile.forms.CommentForm.lambda$new$3(CommentForm.java:70)
java.io.IOException: Object type not supported: com.codename1.location.Location value: altitude = 1000.0
latitude40.714353
longtitude-74.00597299999998
direction0.0
timeStamp1529000278457
velocity50.0
at com.codename1.io.Util.writeObject(Util.java:457)
at com.codename1.io.Util.writeObject(Util.java:394)
at com.X.Xmobile.server.OfflineCommand.externalize(OfflineCommand.java:34)
at com.codename1.io.Util.writeObject(Util.java:258)
at com.codename1.io.Util.writeObject(Util.java:286)
at com.codename1.io.Storage.writeObject(Storage.java:224)
at com.X.Xmobile.server.ServerImpl.addOfflineCommand(ServerImpl.java:1201)
at com.X.Xmobile.server.ServerImpl.finishActivity(ServerImpl.java:1504)
[EDT] 0:6:4,551 - Exception: java.io.IOException - Object type not supported: com.co下面是创建的用于外部化的OfflineCommand类。
public class OfflineCommand implements Externalizable {
private static final int VERSION = 1;
private String name;
private Object[] arguments;
public OfflineCommand() {}
public OfflineCommand(String name, Object... args) {
this.name = name;
this.arguments = args;
}
@Override
public int getVersion() {
return VERSION;
}
@Override
public void externalize(DataOutputStream out) throws IOException {
Util.writeUTF(name, out);
Util.writeObject(arguments, out);
}
@Override
public void internalize(int version, DataInputStream in) throws IOException {
name = Util.readUTF(in);
arguments = (Object[])Util.readObject(in);
}
@Override
public String getObjectId() {
return "OfflineCommand";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object[] getArguments() {
return arguments;
}
public void setArguments(Object[] arguments) {
this.arguments = arguments;
}
}发布于 2018-06-15 12:08:01
Location是不可外部化的。它不显式地支持对象序列化。通常,您需要将读/写数据转换为使用location数据而不是location对象。但是,由于您的代码是泛型的,因此您需要扩展location来实现externalizable。
public class ExternalizableLocation extends Location implements Externalizable {
// implement the externalizable interface here...
}在您的init(Object)类中,将ExternalizableLocation注册为可外部化的,并且在存储Location对象的每个位置,将其替换为ExternalizableLocation。
https://stackoverflow.com/questions/50864400
复制相似问题