Java 要创建地图<;字符串,对象>,对象可以是字符串,也可以是类对象

Java 要创建地图<;字符串,对象>,对象可以是字符串,也可以是类对象,java,Java,如何创建地图 在这个映射中,每次对象都是字符串。但是现在我想在对象中添加一个类。这是混合字符串和类对象的好方法吗?如果是,当我遍历映射时,如何区分类和字符串?因为您在映射中有对象作为值,您可以将任何对象作为值添加为字符串、整数、自定义类 要在迭代时区分类和字符串,可以使用的实例检查它是否为字符串 即: Set-mapKeys=myMap.keySet(); 用于(字符串键:映射键){ 对象值=myMap.get(键); if(字符串的值实例){ //值的类型为字符串 }else if(MyCla

如何创建
地图


在这个映射中,每次对象都是字符串。但是现在我想在对象中添加一个类。这是混合字符串和类对象的好方法吗?如果是,当我遍历映射时,如何区分类和字符串?

因为您在映射中有
对象
作为值,您可以将任何对象作为值添加为字符串、整数、自定义类

要在迭代时区分类和字符串,可以使用的
实例检查它是否为字符串

即:

Set-mapKeys=myMap.keySet();
用于(字符串键:映射键){
对象值=myMap.get(键);
if(字符串的值实例){
//值的类型为字符串
}else if(MyClass的值实例){
//值的类型为MyClass
}
}
java中的每个对象(不包括接口)都扩展了
对象,因此您的方法是正确的

要知道对象是字符串还是其他对象类型,请使用
instanceof
关键字

例如:

Map<String, Object> objectMap = ....;

for (String key :  objectMap.keySet()) {
    Object value = objectMap.get(key);
    if (value instanceof String) {
        System.out.println((String) value);
    } else if (value instanceof Class) {
        System.out.println("Class: " + ((Class)value).getName());
    }
}
Map objectMap=。。。。;
for(字符串键:objectMap.keySet()){
对象值=objectMap.get(键);
if(字符串的值实例){
System.out.println((字符串)值);
}else if(类的值实例){
System.out.println(“类:”+((类)值).getName();
}
}
Map Map=newhashmap();
...
对于(Map.Entry:Map.entrySet()){
if(entry.getValue()instanceof String){
//对entry.getKey()和entry.getValue()执行一些操作
}else if(entry.getValue()instanceof类){
//对entry.getKey()和entry.getValue()执行其他操作
}否则{
抛出新的IllegalStateException(“期望字符串或类作为条目值”);
}
}

您可以使用if(java.lang.String的对象实例)来区分类和字符串。您想要实现什么还不太清楚。您的问题建议使用一个映射,其中键是字符串,值是对象。这是一种常见而正确的方式,但我不确定这就是你的意思。也许可以展示一些示例代码来阐明您的意图。
Map<String, Object> objectMap = ....;

for (String key :  objectMap.keySet()) {
    Object value = objectMap.get(key);
    if (value instanceof String) {
        System.out.println((String) value);
    } else if (value instanceof Class) {
        System.out.println("Class: " + ((Class)value).getName());
    }
}
Map<String, Object> map = new HashMap<String, Object>();
...
for (Map.Entry<String, Object> entry : map.entrySet()) {
    if (entry.getValue() instanceof String) {
        // Do something with entry.getKey() and entry.getValue()
    } else if (entry.getValue() instanceof Class) {
        // Do something else with entry.getKey() and entry.getValue()
    } else {
        throw new IllegalStateException("Expecting either String or Class as entry value");
    }
}