2017-08-16 87 views
0

我有這樣SnakeYaml如何處理對象繼承?

Staff: 
- name: chris 
    type: intern 
    hourlywage: 20 
- name: kevin 
    type: full 
    level: 9 

我要分析此文件陽明海運拿到一個InternStaff對象和一個FullStaff對象YML文件。有沒有辦法做到這一點?

class Staff { 
    String name; 
} 

class InternStaff extends Staff { 
    String hourlyWage; 
} 
Class FullStaff extends Staff { 
    String level; 
} 

回答

2
Staff: 
- !!InternStaff 
    name: chris 
    hourlyWage: 20 
- !!FullStaff 
    name: kevin 
    level: 9 

後的部分的!!必須是合格的類名稱(包括類的包,如果有的話)。

如果您想保留您的語法(使用type: intern而不是標籤),請參閱SnakeYaml docs for custom constructors and representers。隨着一些代碼,您還可以使標籤更作家友好:

Staff: 
- !intern 
    name: chris 
    hourlyWage: 20 
- !full 
    name: kevin 
    level: 9 

這需要註冊自定義構造函數!intern!full標籤。