Java - method.Invoke only works on one class -
i have run problem tried create java application want create modular. want have implemented scheme events, however, events want phone call call file whole scheme starts on. tried 2 things mainly: invoking methods on parent classes, , invoking methods getting them class. here code:
static hashmap< string, arraylist< method > > gameeventdatabase; static hashmap< string, arraylist< string > > gameeventdatabaset; static hashmap< string, arraylist< string > > gameeventclasses; public static void createdatabase() { eventhandler.gameeventdatabase = new hashmap< string, arraylist< method > >(); eventhandler.gameeventdatabaset = new hashmap< string, arraylist< string > >(); eventhandler.gameeventclasses = new hashmap< string, arraylist< string > >(); } public static void callevent( string eventname, object[] args ) throws illegalaccessexception, illegalargumentexception, invocationtargetexception, classnotfoundexception, instantiationexception{ if( gameeventdatabaset.containskey( eventname ) && gameeventclasses.containskey( eventname ) ){ arraylist< string > methods = gameeventdatabaset.get( eventname ); if( methods == null ){ eventhandler.callevent( "game_alert", new string[] {"fatal","the specified event '"+ eventname +"' loaded 'null'. please study developer, located at: techdaan@gmail.com"}); }else{ for( int i=0; i<methods.size(); i++ ){ system.out.println( eventname ); //methods.get( ).invoke( class.forname( gameeventclasses.get( eventname ).get( ) ).newinstance() , args ); seek { class.forname( gameeventclasses.get( eventname ).get( ) ).getmethod( methods.get( ), class.forname( gameeventclasses.get( eventname ).get( ) ) ).invoke( methods.get( ), args ); } grab (nosuchmethodexception e) { } grab (securityexception e) { } system.out.println( "called " + eventname + " in class " + gameeventclasses.get( eventname).get( ) ); } } }else{ eventhandler.callevent( "game_alert", new string[] {"fatal","the specified event '"+ eventname +"' not found, or class index not found. please study developer, located at: techdaan@gmail.com"}); } } public static void newevent( string eventname, string methodname, string classname ){ if( gameeventdatabase.containskey( eventname ) && gameeventclasses.containskey( eventname ) ){ gameeventdatabaset.get( eventname ).add( methodname ); gameeventclasses.get( eventname ).add( classname ); }else{ arraylist< string > temparray = new arraylist< string >(); temparray.add( methodname ); gameeventdatabaset.put( eventname, temparray); arraylist< string > temparraytwo = new arraylist< string >(); temparraytwo.add( classname ); gameeventclasses.put( eventname, temparraytwo ); } } now if register event, works fine:
eventhandler.newevent( "game_alert", "alert", "com.gmail.techdaan.pixldtowns.core.initialize" ); //from initialize - main class eventhandler.newevent( "game_tick", "handlegametick", "com.gmail.techdaan.pixldtowns.core.initialize" ); // initialize - main class those 2 work fine if phone call them, however, if phone call event "tick event", runs 1 time every 1/60th second, doesn't reach somehow. no errors @ all.
public drawmainmenu( jframe frame ){ this.gameframe = frame; setgamebgcolor( color.white ); seek { eventhandler.newevent( "menu_drawmainmenu", "updatemainmenu", "com.gmail.techdaan.pixldtowns.graphics.drawmainmenu" ); } grab (securityexception e) { } } public void updatemainmenu(){ system.out.println( "b" ); if( new file( "resources/interface_login.png" ).exists() ){ system.out.println( "yup =)"); }else{ system.out.println( "nope =("); } } thanks reading , helping!
java methods invoke
No comments:
Post a Comment