反射

itxuls 2012-12-19 04:48:42


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方法?
// 请教...
}

}
...全文
226 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
itxuls 2012-12-19
  • 打赏
  • 举报
回复
引用 8 楼 tiwerbao 的回复:
引用 楼主 itxuls 的回复: 引用 2 楼 AA5279AA 的回复: 引用 1 楼 suciver 的回复:不调用B什么意思?不使用new B()这种写法还是? 人家问的就是反射呗 就是不new一个B,但是通过反射创建一个方法 Java code?123456789101112131415161718192021222324252627/** * 执行某对象方……
到位,确实如此...
Jacky-止涯 2012-12-19
  • 打赏
  • 举报
回复
引用 楼主 itxuls 的回复:
引用 2 楼 AA5279AA 的回复:
引用 1 楼 suciver 的回复:不调用B什么意思?不使用new B()这种写法还是? 人家问的就是反射呗 就是不new一个B,但是通过反射创建一个方法 Java code?123456789101112131415161718192021222324252627/** * 执行某对象方法 * * @param o……
2楼的做法不到位,不实例化B的话,是不能调用fun方法的,只是取class的话是调用不起来了! 还是需要实例化,这样的话就需要调用构造函数,还是得new一个B。

B b = (B) Class.forName(className).newInstance(); 
flyoversky 2012-12-19
  • 打赏
  • 举报
回复
2#楼正解!
suciver 2012-12-19
  • 打赏
  • 举报
回复
楼主到底想要表达什么,是说不用new B()这种的还是说连B这个定义的字眼都不能出现
itxuls 2012-12-19
  • 打赏
  • 举报
回复
2楼 getMethod方法 能够得到 父类的子类的信息?
eviljordan 2012-12-19
  • 打赏
  • 举报
回复
A b = new B(); ? b.fun();
suciver 2012-12-19
  • 打赏
  • 举报
回复
2楼你还不知道楼主的意思呢。如果楼主只是不使用new B()这样的写法的话一句话搞定的事。但是如果楼主说的是连B这个定义都不能出现的话。那是无解的
失落夏天 2012-12-19
  • 打赏
  • 举报
回复
引用 1 楼 suciver 的回复:
不调用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);
suciver 2012-12-19
  • 打赏
  • 举报
回复
不调用B什么意思?不使用new B()这种写法还是?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧