日期:2014-05-20  浏览次数:20728 次

反射
本帖最后由 itxuls 于 2012-12-19 16:49:31 编辑


class A{

public void fun(){
System.out.println("class A");
}

}

class B extends A
{
public void fun(){
System.out.println("class B");
}
}

public class Callback {

/**
 * @param args
 */
public static void main(String[] args) {

// 有什么方法 可以不调用B  访问到B的fun方法?
                  //  请教...
}

}

------解决方案--------------------
引用:
不调用B什么意思?不使用new B()这种写法还是?

人家问的就是反射呗
就是不new一个B,但是通过反射创建一个方法

/**    
     * 执行某对象方法    
     *    
     * @param owner    
     *            对象    
     * @param methodName    
     *            方法名    
     * @param args    
     *            参数    
     * @return 方法返回值    
     * @throws Exception    
     */     
    public Object invokeMethod(Object owner, String methodName, Object[] args)      
            throws Exception {      
     
        Class ownerClass = owner.getClass();      
     
        Class[] argsClass = new Class[args.length];      
     
        for (int i = 0, j = args.length; i < j; i++) {      
            argsClass[i] = args[i].getClass();      
        }      
     
        Method method = ownerClass.getMethod(methodName, argsClass);      
     
        return method.invoke(owner, args);      
    }   
   
对象:Class ownerClass = Class.forName(className); 
------解决方案--------------------
引用: