我可以创建一个接受实例并将map对象作为静态返回的方法吗?

时间:2013-12-05 12:56:37

标签: java

如果我问一个愚蠢的问题,请道歉。我有一个方法,它接受一个对象,将其转换为一个地图并返回地图对象。它不访问声明它的类的任何实例变量。

logger也是一个静态字段。

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;
    }

我不知道是否要将它声明为静态,尽管阅读了许多关于静态方法与非静态方法的线程。

4 个答案:

答案 0 :(得分:1)

这取决于您将如何使用此方法。如果仅在实例中使用它,则应保留实例方法。 由于此方法不依赖于任何实例变量,因此可以将其更改为静态。如果您将从其他对象使用此方法,请执行此操作。在这种情况下,您还可以考虑将此方法移动到某个实用程序类。

答案 1 :(得分:0)

如果它不依赖于任何实例变量(字段)或方法,那么你可以。否则你不能。

实际上,static方法通常用于通用实用程序类,它不依赖于仅上下文参数。

答案 2 :(得分:0)

正如您所提到的,您的方法是使用实​​例变量,因此您无法使用实例变量/对象使方法成为静态。

答案 3 :(得分:0)

将类中的地图声明为静态属性。

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

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

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