JDK5以后的新特性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK5以后的新特性相关的知识,希望对你有一定的参考价值。

枚举的方法   enum

name:返回枚举的名称

ordinal:返回枚举的下标

valueof(String name):得到枚举对象

  自动拆装箱

装箱:把基本数据类型转换成包装类

   如 Integer i=10

拆箱:把包装类转换成基本数据类型

   如 int m =i

jdk特点:向下兼容,比如jdk1.4里面的代码可以在1.5实现,而1.5的却不一定在1.4实现

 

 可变参数运用场景:如果有多个参数相加,就可以使用(逻辑相同,传递参数不同)

格式:数据类型…名称

如 public static void (int…nums) {}

注意事项:

-需要写在方法的参数列表中,不能单独定义

-在方法的参数列表中只能有一个可变参数

-方法的参数列表中的可变参数

 

反射 框架大部分是用反射来实现的

原理:

a、首先把java文件保存到本地硬盘  .java

b、编译java文件, 变成.class文件

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

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

e、当使用反射时,首先需要获取到Class类型,得到了这个类之后,就可以得到class文件里面的所有内容:属性、构造方法、普通方法

  属性:Field

  有参构造方法:Constructor

  普通方法:Method

使用反射获取里面的属性    通过getXXX和setXXX、无参、带参、private这个

-          首先获取到Class类

3种方法

Class cl1 = Person.class;

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

Class cl3 = Class.forName(“cn.itcast.test09.Person”);

                     这个路径右键Person的copy下面的copy Q ualifield Name

 

 操作无参数的构造方法

  Class cl4 = Class.forName(“cn.idcast.Person”);

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

 

操作有参数的构造方法

  Class cl4 = Class.forName(“cn.idcast.Person”);

  Constructor c = cl4.getConstructor(String.class,String.class);  //传递是有参数的构造方法里面的参数类型,类型使用class形式传递

  如这个构造方法里面的参数类型都是String

  Person p = (Person) cl4.newInstance(“lisi”,“100”);

 

操作属性类

Class c2 = Class.forName(“cn.idcast.Person”);

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

Field f1 = c2.getDeclaredField(“name”);  getDeclaredField得到属性

f1.setAccessible(true);    设置可以操作私有属性

f1.set(p,“王五”); 设置name值 第一个参数是实例,第二个参数是设置的值

Sysetem.out.println(f1.get(p));

 

 操作普通方法

Class c2 = Class.forName(“cn.idcast.Person”);

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

Method m1= c2. getDeclaredMethod(“setName”,String.class);

m1.invoke(p,“niupi”); 传递2个参数:person实例、设置的值

Sysetem.out.println(p.getName());

 

当操作的方法是静态方法时候,那么就不需要类的实例,直接使用类名.方法名

 反射使用操作静态方法的话 m1.invoke(null,“niupi”);

以上是关于JDK5以后的新特性的主要内容,如果未能解决你的问题,请参考以下文章

jdk5.0中出现的新特性

JDK5的新特性

jdk5新特性

JDK5的新特性之增强for循环遍历数组或集合

JDK5的新特性之可变参数&Arrays.asList()方法

java 28 - 5 JDK5的新特性 之 枚举的使用