我想用Java Map填充以下文本的占位符。

String text = "Media file %s of size %s has been uploaded";


这就是我在地图中输入值的方式。

Map<String, String> properties = new HashMap<>();

properties.put(MediaFile.fileName, "Sample 001");
properties.put(MediaFile.fileSize, "2Mb");


我希望输出文本是这样的。

Media file Sample 001 of size 2Mb has been uploaded


但是我将其作为输出。

Media file 2Mb of size 2Mb has been uploaded


我创建了一个如下类,以保留变量fileName和fileSize。

public class MediaFile {

    public static String fileName;
    public static String fileSize;

}


但是,如果我像下面这样使用它,则效果很好。但是我想分开fileName和fileSize。但是我不确定我是否正确实现了MediaFile类。谁能告诉我我的代码有什么问题吗?

properties.put("fileName", "Sample 001");
properties.put("fileSize", "2Mb");

最佳答案

当您使用MediaFile.fileNameMediaFile.fileSize作为键时,它们都包含相同的值-null-因为您从未初始化它们。因此,第二个properties.put()替换了第一个properties.put()的值(因为HashMap不允许重复的键)。

您可能要使用常量:

public class MediaFile {
    public static final String fileName = "fileName";
    public static final String fileSize = "fileSize";
}


现在,您的常量将使用不同的值进行初始化,并且原始代码可以正常工作。

10-07 17:49