在RS中同一URI可以createResource多個Resource,List方式存放。還存在另外一種Map存放方式, getResource(URI,boolean loadOnDemand)就是通過這種方式存取,如果不存在的話創建。這兩個方法看起來有些沖突。似乎用于不同場合。

再來看看怎樣通過URL存取EObject:
RS整個相當于一個DataBase, Resource相當于表,存放的是EObject, 每個EObject可以看成對象或者XML。
表用URI來區分,URI中的Segment用來定位EObject。URI的例子參見探索(1)
getEObject(URL, boolean loadOnDemand)很簡單,getResource找到對應的Resource,在里面根據Segment查找,就是那個#///@xxx.n格式的東西,注意,還有ID方式。

getPackageRegistry()用來返回RS的URL->Package注冊表,它也是個本地的注冊表,代理了全局的EPackage.Registry.INSTANCE。這個注冊表用于取得EPackage(類型信息)和EFactory(創建實例)


Resource就不說了,主要load,save, 一些具體子類,比如XmlResourceImpl可以直接使用,指定Encoding之類。

看看ResourceSet對EMF了解了很多~