我想用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.fileName
和MediaFile.fileSize
作为键时,它们都包含相同的值-null
-因为您从未初始化它们。因此,第二个properties.put()
替换了第一个properties.put()
的值(因为HashMap
不允许重复的键)。
您可能要使用常量:
public class MediaFile {
public static final String fileName = "fileName";
public static final String fileSize = "fileSize";
}
现在,您的常量将使用不同的值进行初始化,并且原始代码可以正常工作。