本篇主要講解xstream的converter
簡單的converter
先建立乙個簡單的pojo類
建立乙個person的converterpublic class person
private string name;
public string getname()
public void setname(string name)
}
測試person的converterpublic class personconverter implements converter
@override
public object unmarshal(hierarchicalstreamreader reader,
unmarshallingcontext content)
@override
public boolean canconvert(class calzz)
}
如果乙個只有乙個string型別的屬性,我們可以用abstractsinglevalueconverterpublic class persontest
}
public class personsinglevalueconverter extends abstractsinglevalueconverter
@override
public object fromstring(string str)
}
以上注意方法注意的一點是得重寫person的tostring方法
2.date的converter@override
public string tostring()
注意:public class dateconverter implements converter
public boolean canconvert(class clazz)
public void marshal(object value, hierarchicalstreamwriter writer,
marshallingcontext context)
public object unmarshal(hierarchicalstreamreader reader,
unmarshallingcontext context) catch (parseexception e)
return calendar;
}}
1.dateformat 的實現有些事非執行緒安全的,因此不能把它作為converter的成員變數
2.calendar.class.isassignablefrom(clazz);
isassignablefrom: 判定此class
物件所表示的類或介面與指定的class
引數所表示的類或介面是否相同,或是否是其超類或超介面。
3.complex converter複雜的轉換器public class datetest
}
birthday的converterpublic class birthday
public void setperson(person person)
public calendar getdate()
public void setdate(calendar date)
public char getgender()
public void setgendermale()
public void setgenderfemale()
}
看到了沒,在有些屬性為null時,丟擲了自定義的異常,如果能保證所有的屬性都是非空的,可以用下面的方式實現converterpublic class birthdayconverter implements converter
public void marshal(object value, hierarchicalstreamwriter writer,
marshallingcontext context)
if (birthday.getperson() != null)
if (birthday.getdate() != null)
} public object unmarshal(hierarchicalstreamreader reader,
unmarshallingcontext context) else if (gender.charat(0)== 'm') else
} else
}while (reader.hasmorechildren()) else if ("birth".equals(reader.getnodename()))
reader.moveup();
}return birthday;
}}
birthday的測試類public class birthdayconverter2 implements converter
public void marshal(object value, hierarchicalstreamwriter writer,
marshallingcontext context)
public object unmarshal(hierarchicalstreamreader reader,
unmarshallingcontext context) else
reader.movedown();
person person = (person)context.convertanother(birthday, person.class);
birthday.setperson(person);
reader.moveup();
reader.movedown();
calendar date = (calendar)context.convertanother(birthday, calendar.class);
birthday.setdate(date);
reader.moveup();
return birthday;
}}
public class birthdaytest
}
學習筆記 三
在經過不斷的失敗後,山寨qq專案已基本完成 登入介面 主介面 聊天介面比較簡陋。就不展示了。目前,並沒有資料庫相關的操作,不是因為不會連線資料庫進行增刪改查。是我沒想好這個資料庫具體怎麼搭建。所以在以後的學習中,會慢慢完善這個專案。實現的主要功能 1.使用者輸入賬號密碼,在伺服器驗證,登入 2.和好...
學習筆記三
1.database 2.用於儲存和管理資料的倉庫。3.資料庫的特點 1.持久化儲存資料的。2.方便儲存和管理資料。3.使用統一的方式運算元據庫。sql 4.常見的資料庫軟體1.運算元據庫 crud 1.c create 建立 create database 資料名 2.r retrieve 查詢 ...
深度學習 學習筆記三
1.回歸和分類都是有監督學習問題嘛?分類與回歸,這兩者都屬於監督學習的範疇,都是學習的方法。之所以會去兩個不同的名字,就是因為其對應的輸出值形式不同,僅此而已。對於回歸任務其輸出值是連續的實數值,而對於分類任務其輸出值為離散的類別數。因此這兩者的本質是一樣的,僅僅是輸出形式不同而已。當然由於其輸出形...