A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨朔 于 2012-7-4 22:55 编辑

这个是老师的一个例子就是不懂
第一个

public class TestDemo
{
        
        public TestDemo(int a, int b) {
                super();
                this.a = a;
                this.b = b;
        }
        private int a;
        public int b;
        public int getA() {
                return a;
        }
        public void setA(int a) {
                this.a = a;
        }
        public int getB() {
                return b;
        }
        public void setB(int b) {
                this.b = b;
        }
        
        
        
}
第二个
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;


public class IntrospectorTest {

        /**
         * @param args
         */
        public static void main(String[] args)throws Exception {
               
                TestDemo t=new TestDemo(3,5);
//                String propertrName="x";
               
                String propertyName="a";
                PropertyDescriptor pd=new PropertyDescriptor(propertyName,t.getClass());
               
                Method m=pd.getReadMethod();
                Object retVal=m.invoke(t);
                System.out.println(retVal);
               
                Method m1=pd.getWriteMethod();
                m1.invoke(t,1);
//                System.out.println(retVal);
               
                t.getA();
                System.out.println(t.getA());
               
               

        }

}

点评

建议楼主看视频的时候不要只是看代码 多思考 多看API 这是张老师的视频里的 我觉得讲得很详细 很到位......  发表于 2012-7-4 20:38

评分

参与人数 1黑马币 +15 收起 理由
蒋映辉 + 15

查看全部评分

9 个回复

倒序浏览
String propertyName="a"; //这里定义string变量其实就是定义TestDemo类中你想获取的成员属性名字
PropertyDescriptor pd=new PropertyDescriptor(propertyName,t.getClass());  //创建属性描述类对象,并传入属性名和属性所属类的字节码
回复 使用道具 举报
周朋飞 来自手机 中级黑马 2012-7-4 14:45:00
藤椅

首先这是javabean内省的例子其实就是在你不知道类对象的属性的时候给其设值'你问的那个问题为什么一个字符串是a因为通过get方法的名字可以确定字段的名字因为bean都是以字段的大写来命名的比如x就是getX所以这就是这句话的意思不懂了可以再问我
回复 使用道具 举报
周朋飞 发表于 2012-7-4 14:45
首先这是javabean内省的例子其实就是在你不知道类对象的属性的时候给其设值'你问的那个问题为什么一个字符 ...

问题是怎么知道getX的,这个里面没有给出getX这个方法
回复 使用道具 举报
在JavaBean中规范写法为,字段名小写,获取和设置某个字段的get,set中将字段名的首字母该为大写,当然你也可以不按这个规范,但是为了更专业
还是按规范比较好

张老师视频里面说的很清楚了
回复 使用道具 举报
杨朔 发表于 2012-7-4 19:48
问题是怎么知道getX的,这个里面没有给出getX这个方法

你问的问题就是要确定a是JavaBean中的变量
Method m=pd.getReadMethod();
  这个就是得到get方法  所以才会要求你的JavaBean要写规范
回复 使用道具 举报
蒋映辉 发表于 2012-7-4 20:40
你问的问题就是要确定a是JavaBean中的变量
Method m=pd.getReadMethod();
  这个就是得到get方法  所以才 ...

Method m=pd.getReadMethod();这个方法在这道题里面是获得另一个属性的,没有给这个a用get方法,也没有对这个a的具体说明,所以我还是不是很懂。
回复 使用道具 举报
杨朔 发表于 2012-7-4 21:39
Method m=pd.getReadMethod();这个方法在这道题里面是获得另一个属性的,没有给这个a用get方法,也没有对 ...

String propertyName="a";
PropertyDescriptor pd=new PropertyDescriptor(propertyName,t.getClass());这句代码有什么用?就是给a这个属性一个描述的对象  然后下面的pd对象的获得getMethod方法是就是获取a这个变量的get方法了 因为pd是描述a变量的  所以你得到的不可能是获取b的方法  这就是你为什么要用String propertyName="a";
这个来限制变量必须是a了
               
                Method m=pd.getReadMethod();
回复 使用道具 举报
蒋映辉 发表于 2012-7-4 21:54
String propertyName="a";
PropertyDescriptor pd=new PropertyDescriptor(propertyName,t.getClass()); ...

有时候看着看着就不知道到底怎么了,就像是钻了牛角尖,在突然间一看
就明白了,终于懂了。
回复 使用道具 举报
杨朔 发表于 2012-7-4 22:53
有时候看着看着就不知道到底怎么了,就像是钻了牛角尖,在突然间一看
就明白了,终于懂了。 ...

恩咯  懂了就好  我觉得反思和总结比敲代码  看视频都重要
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马