java - How to reflect a field that implements map interface? -


i'm trying value of following field via reflection:

map<string,classloader> loaders0 = new linkedhashmap<string,classloader>(); 

but when try value using field.get(new linkedhashmap()), following:

java.lang.illegalargumentexception: can not set java.util.map field loaders0 java.util.linkedhashmap 

and seeing map interface not make new map interface set too. know how around this?

    field loadersfield = this.getpluginloader().getclass().getdeclaredfield("loaders0");     togglefinal(loadersfield);     map<string, pluginclassloader> loaders0 = (map<string, pluginclassloader>) loadersfield.get(new linkedhashmap<string, pluginclassloader>());     loaders0.put(description.getname(), bcl);     loadersfield.set(map.class,loaders0); 

this statement

loadersfield.set(map.class,loaders0); 

means trying set field loader of object map.class value loaders0.

what want call on instance of class has field loader.

loadersfield.set(yourinstance, loader0); 

here's correct usage of methods:

public class myclass {     public map<string, classloader> loader = new linkedhashmap<string, classloader>();      public static void main(string[] args) {         try {             field field = myclass.class.getfield("loader");             myclass instance = new myclass();             map<string, classloader> loader = (map<string, classloader>) field.get(instance);             system.out.println(loader.size()); // prints 0             map<string, classloader> newloader = new linkedhashmap<string, classloader>();             newloader.put("adsas", null);             field.set(instance, newloader);             loader = (map<string, classloader>) field.get(instance);              system.out.println(loader.size()); // prints 1         } catch (exception e) {             //         }     } } 

this class has field loader, can , set above.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -