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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 回首、后_街 中级黑马   /  2013-5-7 13:08  /  3006 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 回首、后_街 于 2013-5-9 20:25 编辑

IntrospectorDemo demo = new IntrospectorDemo();
   demo.setName("张三");
   BeanInfo  bi = Introspector.getBeanInfo(demo.getClass(),Object.class);
   PropertyDescriptor[] props = bi.getPropertyDescriptors();
   for(int i=0;i<props.length;i++){
        System.out.println(props.getName()+"="+props.getReadMethod().invoke(demo,null));
     }   

运行该程序出现该异常Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.oop
不知道哪里出了问题???

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 蔡增辉 于 2013-5-7 14:53 编辑

"Prohibited package name",是不是包名出现了问题
回复 使用道具 举报
你可以把详细的点贴出来,只有一段代码的话,这样很难判断哪里出错了
回复 使用道具 举报
  看不出来 代码不全没法运行
回复 使用道具 举报
花开花落总相似 发表于 2013-5-7 14:35
看不出来 代码不全没法运行

package java.oop;

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


public class Test {

        /**
         * @param args
         * @throws IntrospectionException
         * @throws InvocationTargetException
         * @throws IllegalArgumentException
         * @throws IllegalAccessException
         */
        public static void main(String[] args) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
                // TODO Auto-generated method stub

                 IntrospectorDemo demo = new IntrospectorDemo();
                 demo.setName("张三");
                 BeanInfo  bi = Introspector.getBeanInfo(demo.getClass(),Object.class);
                 PropertyDescriptor[] props = bi.getPropertyDescriptors();
                 for(int i=0;i<props.length;i++){
               System.out.println(props.getName()+"="+props.getReadMethod().invoke(demo,null));
            }   
        }

IntrospectorDemo demo = new IntrospectorDemo(); //是一个类 里面的属性有

public class IntrospectorDemo {

        private String name;
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        private int age;
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
}
回复 使用道具 举报
你这个代码、、怎么看不出来你想做啥子呢!
回复 使用道具 举报
属性描述符不是这样用的。
|--
5、IntroSpector 内省

IntrosPector 是用来操作JavaBean类的;
所谓的javabean类其实是一个特殊的java类含有get和set方法的类。
三种方法:
1、使用PropertyDescriptor 属性描述符
PropertyDescriptor pd = new PropertyDescriptor(String propertyName,Class BeanClass);
getX()
Method getMethod = pd.getReadMethod();
set(类型  对象);
Method setMethod = pd.getWriteMethod();
2、使用Introspector  内省
BeanInfo beanInfo = Introspector.getBeanInfo(字节码比如:ReflectPoint.class);
再得到所有的属性描述符
PropertyDescriptor [] pds = beanInfo.getPropertyDescriptors();
然后可以进行迭代获得每个字段的值(使用get方法或使用set方法修改)
3、直接使用BeanUtils类(静态方法)
BeanUtils.setProperty(,,);
BeanUtils.getProperty();

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
问题如果以解决,请及时修改分类,否则继续提问问,谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马