For your first issue, can you refactor to use singleton Factory instead and make the "factory methods" non-static? Example:
MyFactory factory = MySubclassedFactory.getInstance(); MyWidget = factory.createMyWidget(); Then the createMyWidget method (possibly abstract in MyFactory) can be overridde in MySubclassedFactory. On Sat, Jan 2, 2010 at 2:58 PM, jotobjects <[email protected]> wrote: > Here is a start... > > Class barClass = com.example.Bar.class; > Method m = barClass.getMethod("foo", ...) // add parameter types to > call > Object val = m.invoke(null, ...) // add parameter values to call > > On Jan 2, 12:10 pm, Philip <[email protected]> wrote: > > > > 2. I am trying to replicate the easy functionality of the > > NSClassFromString method. Basically, if I have a string for a full > > qualified class name, what is the best way to invoke a static method > > with a known signature for that class. > > > > In objective c: > > > > Class foo() > > { > > NSString *r = @"Bar"; > > Class c = NSClassFromString(r); > > return c; > > > > } > > > > then you can call method sna() on class Bar with [foo() sna:d] > > > > So far in Java using reflection, I came up with this convoluted code > > that doesn't replicate the behavior for the parameters for the > > function (I pass back the object reference, not the method back, > > therefore I also have to pass the parameter to call the method): > > > > static SuperClassOfBar foo(float d) { > > try { > > String r = "Bar"; > > Class c = Class.forName("com.example."+r); // Fully > > qualified name for class > > Class partypes[] = new Class[1]; > > partypes[0] = Float.TYPE; > > Method m = c.getDeclaredMethod("sna", partypes); > > Object arglist[] = new Object[1]; > > arglist[0] = d; > > Object o = m.invoke(null, arglist); > > return SuperClassOfBar.class.cast(o); > > } catch (Exception e) { > > return null; > > } > > > > It works but it's heavy and not pretty. I understand that leaving a > > dynamic language like objective c , I have to make some compromises, > > but I may miss something about Java for not having found something > > more lightweight for such a generic programming functionality. Any > > suggestions to simplify this implementation are welcome. > > > > Thanks in advance. > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

