我已经很困惑了。我让它正常工作,然后去做其他事情,然后又发现它不起作用。
现在我的代码是
package com.kingmo.utils.abstractions;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Location;
public class SerializableLocation extends Location implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public SerializableLocation(Location loc) {
super(loc.getWorld(), loc.getX(), loc.getY(), loc.getZ());
}
public SerializableLocation(Map<String, Object> ser) {
this(new Location(Bukkit.getWorld((String) ser.get("world")), (int) ser.get("x"), (int) ser.get("y"),
(int) ser.get("z")));
}
@Override
public Map<String, Object> serialize() {
Map<String, Object> map = new HashMap<>();
map.put("world", this.getWorld().getName());
map.put("x", this.getBlockX());
map.put("y", this.getBlockY());
map.put("z", this.getBlockZ());
return map;
}
@Override
public int hashCode() {
return 31 * (int) (this.getX() + this.getY() + this.getZ() + this.getWorld().getName().hashCode());
}
@Override
public boolean equals(Object o) {
if (!(o instanceof SerializableLocation))
return false;
Location loc = (Location) o;
return loc.getX() == this.getX() && loc.getY() == this.getY() && loc.getZ() == this.getZ()
&& loc.getWorld().getName().equals(this.getWorld().getName());
}
}
如您所见,我有可序列化类所需的 SerializableLocation#init(Map
答案 0 :(得分:0)
您的类 SerializableLocation
实现了 Serializable
但它的父类 Location
没有实现。为了在这种情况下序列化工作,父类需要有一个无参数构造函数,但它没有。考虑到您谈到使用 Map<String, Object>
的必需构造函数,您很可能会混淆 Serializable
和 ConfigurationSerializable
,因为后者需要,而前者不需要。