我有一个类A
我想动态生成方法名
只需要定义接口或者其他就可以了!
还望各位老鸟指点一下!

解决方案 »

  1.   

    想要类似效果??
    obj.foo = function() {alert("Hello World");}
      

  2.   

    有一个接口A
    里面有方法get();
    我希望实现实现A这个接口的类B中的get()方法名变成getB()之类的
    以后任意一个实现A这个接口的类其get()方法名编程getClassName();
    望指教!
      

  3.   

    据我浅薄的功底,我理解的是既然实现某接口,那么方法名必须和接口是一致的,除非用继承,继承之后,把继承来的方法在你的getB之类的方法里面super.get(),但这种也无法动态.真正的动态,不知道是否可行.
      

  4.   

    ER反射得了
    反正你都是getClassName
    不过这个要通过文档做好规范
      

  5.   

    你要继承接口A并实现其方法,比如说你定义一个类B实现接口A,这个过程,是你自己写代码。这个过程,本来就是静态的,是你自己用手敲代码。
    这根本就不是动态的,你为什么还要动态的生成方法名呢?
      

  6.   

    唉……  
    坐等…… 
    思考……  
    google……  
    百度……
    搜狗……
      

  7.   

    I don't understand what you say.
      

  8.   

    public Object invokeMethod(T obj,String methodName, Object[] args){       
        Object object = null;
    @SuppressWarnings("rawtypes")
    Class ownerClass = obj.getClass();   
        @SuppressWarnings("rawtypes")
    Class[] argsClass = new Class[args.length];   
            for(int i = 0, j = args.length; i < j; i++) {   
            argsClass[i] = args[i].getClass();   
         }      
        Method method;
    try {
    methodName = "get" + methodName;
    method = ownerClass.getMethod(methodName, argsClass);
    object = method.invoke(obj, args);   
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally{
    }
    return object;     
    }
         加入有一个对象A,里面有方法A getAbc(Object...obj),首先把方法的参数放入数组中,Object[] args,这样调用invokeMethod(A,Abc,args),这个的返回值就是getAbc的返回值。
          用了反射。