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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lizeliyong 中级黑马   /  2016-1-13 14:48  /  782 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

4. 若想通过类的带参数的构造方法生成对象,只能使用下面这一种方式:

代码示例:

[java] view plaincopyprint?


  •     // 该方法实现对Customer对象的拷贝操作  
  • public Object copy(Object object) throws Exception  
  • {  
  •     Class<?> classType = object.getClass();  
  •        //先调用Class类的getConstructor()方法获得一个Constructor 对象,它代表默认的构造方法,然后调用  
  •        Constructor对象的newInstance()方法构造一个实例。  
  •     Object objectCopy = classType.getConstructor(new Class[] {})  
  •             .newInstance(new Object[] {});  
  •     Field[] fields = classType.getDeclaredFields();  
  •     for (Field field : fields)  
  •     {  
  •         String name = field.getName();  
  •         // 将属性的首字母转换为大写  
  •         String firstLetter = name.substring(0, 1).toUpperCase();            String getMethodName = "get" + firstLetter + name.substring(1);  
  •         String setMethodName = "set" + firstLetter + name.substring(1);  
  •         Method getMethod = classType.getMethod(getMethodName,  
  •                 new Class[] {});  
  •         Method setMethod = classType.getMethod(setMethodName,  
  •                 new Class[] { field.getType() });  
  •         Object value = getMethod.invoke(object, new Object[] {});  
  •         setMethod.invoke(objectCopy, new Object[] { value });  
  •     }  
  •     // 以上两行代码等价于下面一行  
  •     // Object obj2 = classType.newInstance();  
  •     // System.out.println(obj);  
  •     return objectCopy;  
  • }  


5.Integer.TYPE返回的是int,而Integer.class返回的是Integer类所对应的Class对象。

java.lang.Array 类提供了动态创建和访问数组元素的各种静态方法

一维数组的简单创建,设值,取值

二维数组的简单创建,设值,取值

[java] view plaincopyprint?


  •      //创建一个设值数组维度的数组  
  •      int[] dims = new int[] { 5, 10, 15 };  
  •     //利用Array.newInstance创建一个数组对象,第一个参数指定数组的类型,第  
  • Object array = Array.newInstance(Integer.TYPE, dims);  
  •   
  • System.out.println(array instanceof int[][][]);  
  •      //获取三维数组的索引为3的一个二维数组  
  • Object arrayObj = Array.get(array, 3);  
  •      //获取二维数组的索引为5的一个一维数组  
  • arrayObj = Array.get(arrayObj, 5);  
  •     //设值一维数组arrayObj下标为10的值设为37  
  • Array.setInt(arrayObj, 10, 37);  
  •   
  • int[][][] arrayCast = (int[][][]) array;  
  •   
  • System.out.println(arrayCast[3][5][10]);  


利用反射访问类的私有方法:




  • Private p = new Private();  
  •   
  • Class<?> classType = p.getClass();  
  •   
  • Method method = classType.getDeclaredMethod("sayHello",  
  • new Class[] { String.class });   
  • method.setAccessible(true);//压制Java的访问控制检查,使允许访问private方法  
  • String str = (String)method.invoke(p, new Object[]{"zhangsan"});  
  • System.out.println(str);  


利用反射访问类的私有变量:

[java] view plaincopyprint?


  •    Private2 p = new Private2();  
  •       
  • Class<?> classType = p.getClass();  
  •       
  • Field field = classType.getDeclaredField("name");  
  •       
  • field.setAccessible(true);//压制Java对访问修饰符的检查  
  •       
  • field.set(p, "lisi");  
  •       
  • System.out.println(p.getName());  


2 个回复

倒序浏览
你这颜色搞错了 把 我什么代码都看不到
回复 使用道具 举报
字体颜色是白色
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马