繁体   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