簡體   English   中英

我可以創建一個接受實例並將map對象作為靜態返回的方法嗎?

[英]Can I make a method which takes an instance and returns map object as static?

如果我問一個愚蠢的問題,我會道歉。 我有一個方法,它接受一個對象,將其轉換為一個地圖並返回地圖對象。 它不訪問聲明它的類的任何實例變量。

記錄器又是一個靜態字段。

public Map<String, Object> createDocumentMap(final DocId docId) {

        logger.debug("Creating document map...");
        Map<String, Object> documentMap = new HashMap<String, Object>();
        documentMap.put("docNumber", docId.getDocNo());
        documentMap.put("docRev", docId.getDocRev());

        logger.debug("Document map ready. " + documentMap);

        return documentMap;
    }

盡管閱讀了許多關於靜態方法與非靜態方法的線程,但我不知道是否將其聲明為靜態。

這取決於你將如何使用這種方法。 如果僅在實例中使用它,則應保留實例方法。 由於此方法不依賴於任何實例變量,因此可以將其更改為靜態。 如果您將從其他對象使用此方法,請執行此操作。 在這種情況下,您還可以考慮將此方法移動到某個實用程序類。

如果它不依賴於任何實例變量(字段)或方法,那么你可以。 否則你不能。

實際上, static方法通常用於通用實用程序類,它不依賴於僅上下文參數。

正如您所提到的,您的方法是使用實​​例變量,因此您無法使用實例變量/對象創建靜態方法。

將類中的映射聲明為靜態屬性。

public static Map<String, Object> documentMap = null;

並在您的方法中初始化它。

documentMap = new HashMap<String, Object>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM