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

2018-04-08  本文已影响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));

         }

 }

上一篇下一篇

猜你喜欢

热点阅读