Avatar billede ABCit Juniormester
09. maj 2018 - 15:17 Der er 3 kommentarer

HaspMap

Jeg får følgende fejl på nedenstående kode. Nogen der kan se hvad fejlen er?

java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.TreeMap

----------------------------
protected static Map getResource(String resourceId, String function) {
        TreeMap functionResources = (TreeMap) ((Map) AbstractParameterManager.getResource(resourceId)).get(function);
        if (functionResources == null) {
            functionResources = new TreeMap();
            ((Map) AbstractParameterManager.getResource(resourceId)).put(function, functionResources);
        }
        return functionResources;
    }
Avatar billede arne_v Ekspert
09. maj 2018 - 15:28 #1
Interfacet Map har to implementationer HashMap og TreeMap.

Map m<X,Y> = new HashMap<X,Y>();
HashMap m<X,Y> = new HashMap<X,Y>();
Map m<X,Y> = new TreeMap<X,Y>();
TreeMap m<X,Y> = new TreeMap<X,Y>();

virker alle, men:

TreeMap m<X,Y> = new HashMap<X,Y>();
HashMap m<X,Y> = new TreeMap<X,Y>();

virker ikke.
Avatar billede arne_v Ekspert
09. maj 2018 - 15:30 #2
Hvis jeg skulle gaette paa din kode:

TreeMap functionResources = (TreeMap) ((Map) AbstractParameterManager.getResource(resourceId)).get(function);

->

Map functionResources = ((Map) AbstractParameterManager.getResource(resourceId)).get(function);

og:

functionResources = new TreeMap();

->

functionResources = new HashMap();
Avatar billede ABCit Juniormester
11. maj 2018 - 14:45 #3
Hm, synes ikke jeg kan få det til at fungere. Der kommer llidt mere kode nedenfor:

public abstract class AbstractParameterManager implements ParameterManager {
    protected static final Map resourceLocations =
        ResourceLocator.locateResources();
    protected static final Map resources = new TreeMap();
    protected final Map overrides = new TreeMap();

   
    protected static Object getResource(String resourceId) {
        Map resourceMap = (Map) resources.get(resourceId);
        if (resourceMap == null) {
            resourceMap = new TreeMap();
            resources.put(resourceId, resourceMap);
        }
        return resourceMap;
    }
   
    protected static Map getResource(String resourceId, String function) {
        TreeMap functionResources = (TreeMap) ((Map)
                AbstractParameterManager.getResource(resourceId)).get(function);
        if (functionResources == null) {
            functionResources = new TreeMap();
            ((Map)
                      AbstractParameterManager.getResource(resourceId)).put(function,
                      functionResources);
        }
        return functionResources;
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester