黑马程序员——反射Constructor类

来源:互联网 发布:淘宝客推广软文范例 编辑:程序博客网 时间:2024/06/01 08:02

——- android培训、java培训、期待与您交流! ———-

  1. 反射就是把java类中的各种成分映射成相应的java类

    例如:
    一个java类中用一个Class类的对象来表示,一个类中的组成部分: 成员变量,方法,构造方法,包等等
    比如
    汽车 是一个类
    汽车中 的发动机, 变速箱…… 也是一个一个类

  2. 简单的说 java中的Class 需要提供一些方法,来获取其中 变量,构造方法,修饰符,包……这些信息就用相应类的实例对象来表示

        比如 Field Method Contructor Package ……
System.exit//方法一:System.getProperties();//方法二:Method//方法类别Method//mehthodObj1  具体的方法一
Constructor类得到某个类所有的构造方法:例子: Constructor[]constructor=  //所有的构造方法放在一个数组里面Class.forName("java.lang.String").gerConstructor();得到某一个构造方法例子: Constructor constructor=  Class.forName("java.lang.String").gerConstructor(SringBuffer.class);//gerConstructor();得到某一个构造方法//获得方法是要用到类型创建实例对象通常方式:String str = new String(new StringBuffer("abc"));反射方式:String str = (String)constructor.newInstance(new StringBuffer("abc"));//调用获得的方法时要用到上面相同类型的实例对象Class.newIndtance()方法例子:String obj = (String)Class.forName("java.lang,String").newInstance();该方法内部先得到默认的构造方法,然后用构造方法创建实例对象该方法内部的具体代码体现是怎么写的?    用到了缓存机制来保存默认的构造方法的实例对象。
package com.itheima;import java.lang.reflect.Constructor;public class ReflectTest {    public static void main(String[] args) throws Exception{        // TODO Auto-generated method stub        {            String str1 = "abc";            Class cls1 = str1.getClass();            Class cls2 = String.class;            Class cls3 = Class.forName("java.lang.String");            System.out.println(cls1 == cls2);            System.out.println(cls2 == cls3);            System.out.println(cls1.isPrimitive());            System.out.println(int.class.isPrimitive());            System.out.println(int.class == Integer.class);            System.out.println(int.class == Integer.TYPE);            System.out.println(int[].class.isPrimitive());            System.out.println(int[].class.isArray());            //new String(new StringBuffer("abc"));            //【ALT+/】提供内容的辅助,不要为记不全方法和属性名称            Constructor constructor1 = String.class.getConstructor(StringBuffer.class);//方法-类型一致StringBuffer            String str2 = (String)constructor1.newInstance(new StringBuffer("abc"));//传值-类型一致StringBuffer            System.out.println(str2.charAt(2));        }    }}

——- android培训、java培训、期待与您交流! ———-

0 0