2017-02-02 101 views

回答

1

看一看在Adaptable文檔,希望它回答你的問題

它明確地留給實現細節每次調用此方法與同類型是否得到相同的物體或每次通話都有一個新對象。

AdaptTo

類似的問題purpose-of-resourceresolver-adapttosession

只是爲了簡單

  1. ResourceResolver解釋是服務的API,我們可以解決Resource(資源是內容片段上吊索行爲)物體。
  2. 通過SlingHttpServletRequest.getResourceResolver()方法,資源解析器可用於請求處理servlet。資源解析器也可以通過ResourceResolverFactory創建。
  3. ResourceResolver通常不是線程安全的!使用解析器的應用程序必須提供適當的同步以確保不會有多個線程同時針對單個解析器,資源或結果對象進行操作。
  4. ResourceResolver也適用於獲取其他類型的適配器。

所以當你通過ResourceResolver和adaptTo獲取資源的其他類型或對象的某些表示時,對象將是相同的。請記住,在資源上執行的操作(在adaptTO()之後)應該注意,因爲該資源通常不是線程安全的。示例解析器通過使用refresh()方法等更新以反映最新狀態。

+0

感謝您指向該鏈接。但是,我無法找到PageManager類的確切實現。我試着查看PageManagerFactory實現,但找不到具體的類來確認將返回的內容。 – Ruchi

+0

@Ruchi您是否在尋找adaptoTo(Pagemanager.class)的例子? – VAr

+0

API中的具體實現,可以確認是否創建多個對象或返回相同的對象。 – Ruchi

0

好的。

我找不到API的具體實現,但我寫了這個示例代碼進行測試:

ResourceResolver res = request.getResourceResolver(); 
    PageManager temp = res.adaptTo(PageManager.class); 
    for (int i=0; i < 100; i++) { 
     PageManager mgr = res.adaptTo(PageManager.class); 

     out.println("For iteration: " + i + " The object is: " + mgr.hashCode()); 
     if (temp == mgr) { 
      out.println("For iteration: " + i + " the objects are equal"); 
     } 
     temp = mgr; 
    } 

我得到了相同的哈希碼eachtime,也是兩個引用與==比較返回了true;因此證明他們指向同一個對象。

相關問題