美文网首页
第五阶段-jdk新特性及反射

第五阶段-jdk新特性及反射

作者: 有一束阳光叫温暖 | 来源:发表于2018-04-08 08:31 被阅读0次

    一、jdk新特效

        1.泛型*

             a.泛型编程关键掌握两点:

              1.在方法参数中使用通配符

              2.在方法的参数类型和返回类型中使用通用类型

        2.枚举

            a.对象的某个属性的值不能是任意的,必须为固定的一组取值其中的某一个

        3.静态导入

            a.导入了类中的所有静态成员,简化静态成员的书写

        4.自动拆装箱*

            a.java中数据类型分为两种 : 基本数据类型   引用数据类型(对象)

            b.ava程序中所有的数据都需要当做对象来处理,针对8种基本数据类型提供了包装类

           -int --> Integer

           -byte --> Byte

          -short --> Short

         -long --> Long

         -char --> Character

         -double --> Double

         -float --> Float

         -boolean --> Boolean

        5.增强for循环*

            for( 元素类型 变量名 :Collection集合 & 数组 ) {

                     …..

           }

       6.可变参数

            a.用到函数的参数上,当要操作的同一个类型元素个数不确定的时候

              可是用这个方式,这个参数可以接受任意个数的同一类型的数据。

            b.如果在参数列表中使用了可变参数,可变参数必须定义在参数列表结尾

         (也就是必须是最后一个参数,否则编译会失败。)

    二、反射

        1.反射的原理

            a.需要把java文件保存本地硬盘.java

            b.编译java文件,.class

            c.使用jvm,把class文件通过类加载到内存中

            d.class文件在内存中使用class类表示

        2.反射的属性与方法

            a.属性通过一个类:  Filed

            b.构造方法通过一个类: Constructor

            c.普通方法通过一个类: Method

        3.反射操作类里面的属性

            a.获取class类

            Class calsstest = Person.class;

            Class calsstest1 = new Person().getClass();

            Class calsstest2 = Class.forName("cn.itcase.Person");

            注:要对一个类进行实例化,可以new,如果不使用new,用反射

        b.操作无参数的构造方法(代码)

            public void test1 throws Exception{

            //得到class

           Class calsstest2 = Class.forName("cn.itcase.Person");

            //得到Person 类的实例

            Person p = (Person)c3.newInstance();

            //设置值

            p.setName("zhangsan");

            System.out.prrint(p.getName());

            }

           c.操作有参的构造

            public void test2() throws Exception{

            Class c1 = Class.forName("cn.itcase.Person");

            Constructor cs = c1.getConstructor

            (String.class,String.class);    

            //通过有参数的构造方法创建Person实例

            Person p1 = (Person)cs.newInstance("lisi","100");

            System.out.println(p1.getId()+" "+p1.getName);

        }

              e.使用Method类表示普通方法

            public void test4() throws Exception{

            Class c4 = Class.forName("cn.itcase.Person");

            Person p4 = (Person)c4.newInstance();

            //得到所有普通方法

            //c4.getDeclaredMethods();

            Method m1 = c4.getDeclaredMethod("setName",String.class);

            m1.invoke(p4,"niqui");

            System.out.println(p4.getName());

            f.操作name属性

            public void test3(){

        try{

                    Class c2 = class.forName("cn.itcase.Person");

                    Person p11 = (Person)c2.newInstance();

                    Field f1 = c2.getDeclaredField("name");

                    //操作私有属性

                    f1.setAccessible(true);

                    f1.set(p11,"wangwu");

                    System.out.println(f1.get(p11));

             }

     }

    相关文章

      网友评论

          本文标题:第五阶段-jdk新特性及反射

          本文链接:https://www.haomeiwen.com/subject/jtxphftx.html