黑马程序员技术交流社区

标题: invoke方法的疑惑 [打印本页]

作者: zhrnghgwsws    时间: 2014-5-25 15:24
标题: invoke方法的疑惑
package cn.itcast.day1;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;

public class IntroSpectorTest {
        public static void main(String[] args) throws Exception{
                ReflectPoint rp1=new ReflectPoint(3,5);
                //属性名为x.
                String propertyName="x";
                //通过向传递rp1.class和属性名,创建一个属性描述器,PropertyDescriptor.
                PropertyDescriptor pd=new PropertyDescriptor(propertyName,rp1.getClass());
                //通过此属性描述对象获取,此属性的获取getX方法。
                Method methodGetX=pd.getReadMethod();
                //调用此Method对象的invoke方法,获取此属性值。
                Object retVal=methodGetX.invoke(rp1);
                //Object retVal = getProperty(rp1, propertyName);
                System.out.println(retVal);

想上面的代码中,使用的invoke(),值传递了一个对象的参数,方法本身是没有参数的。
而invoke方法的参数是两个invoke(Object obj,Object...args).
疑问就在于,对应调用一个方法来说,像上面的代码中invoke方法的参数值传递一个参数,按理说应该属于参数传递不正确啊,为什么可以这样呢?
作者: zhrnghgwsws    时间: 2014-5-25 16:06
为什么没人呢?
作者: zhrnghgwsws    时间: 2014-5-25 16:09
上面错别字还挺多的。最后一句是这样的:
疑问就在于,对于调用一个方法来说,像上面的代码中invoke方法的参数只传递了一个参数,按理说应该属于参数传递不正确啊,为什么却可以这样使用呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2