HTML.Attribute
不是Serializable
。出於某種原因,Java開發人員決定不將序列化支持添加到HTML.Attribute
以及HTML.Tag
。最可能的原因是,使用它們的HTMLDocument
被序列化爲HTML文本,因此不需要直接序列化Java對象。
很容易修復,真的。創建自己的屬性:
public final class LinkAttribute implements Serializable {
private static final long serialVersionUID = -472010305643114209L;
public static final LinkAttribute HREF = new LinkAttribute("href");
private final String name;
private LinkAttribute(final String name) {
this.name = name;
}
public boolean equals(final Object o) {
return o instanceof LinkAttribute
? name.equals(((LinkAttribute) o).name)
: false;
}
public int hashCode() {
return name.hashCode();
}
public String toString() {
return name;
}
}
這大致HTML.Attribute
類的實現,與Serializable
界面添加。
使用LinkAttribute.HREF
無處不在您使用HTML.Attribute.HREF
。
@Igor沒有必要在類聲明中指定'static'。它應該是一個頂級的類,其中靜態關鍵字對類修飾符無效。如果你在另一個類中使用它作爲嵌套類,那麼在你的聲明中加入'static'。 –
在我的代碼中,我沒有創建類的實例,所以我需要指定它。 :)'String href =(String)a.getAttribute(LinkAttribute.HREF);' – Igor
@Igor不,你不知道。關鍵字'static'用於使類成員屬於該類,而不是作爲類的實例的對象。對於頂級類,即如果您創建'LinkAttribute.java'並將代碼粘貼到那裏,向聲明中添加'static'會導致編譯時錯誤:*此處不允許修飾符靜態*。 –