首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

反射解决方案

2013-01-25 
反射本帖最后由 itxuls 于 2012-12-19 16:49:31 编辑class A{public void fun(){System.out.println(clas

反射
本帖最后由 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); 
[解决办法]
引用:


引用:
引用:不调用B什么意思?不使用new B()这种写法还是?
人家问的就是反射呗
就是不new一个B,但是通过反射创建一个方法
Java code?123456789101112131415161718192021222324252627/**         * 执行某对象方法         *         * @param o……

2楼的做法不到位,不实例化B的话,是不能调用fun方法的,只是取class的话是调用不起来了!
还是需要实例化,这样的话就需要调用构造函数,还是得new一个B。

B b = (B) Class.forName(className).newInstance(); 


热点排行