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”);

时间: 2024-08-04 22:37:52

JDK5以后的新特性的相关文章

泛型,JDK5新特性,List集合子实现类,Map集合,Set/TreeSet集合,asList

一.泛型(JDK5以后新特性) 1.概述:泛型直接规定集合的存储类型,将明确的集合类型的工作推迟到了创建对象或者调用方法的时候,属于一种参数化类型,可作参数传递.2.优点(1)将运行时期异常提前到了编译时期:(2)优化了设计,解决了×××警告线问题:(3)避免了强制类型转换, ,解决了向下类型转换出现的问题ClassCastException:(4)泛型的引出可以提供程序的安全性.3.泛型定义在类上(1)格式:public class 类名<T>{--}(2)实例:实体类: 测试类: 4.泛型

Day07 jdk5.0新特性&Junit&反射

day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装MyEclipse 先安装了JDK ? MyEclipse介绍 ? MyEclipse是Eclipse的一个插件: MyEclipse是需要花钱的: MyEclipse官网不在欢迎中国人登录: ? MyEclipse使用 ? 1 创建项目 选择工作空间: 工作空间路径不能有空格和中文: 工作空间以班名

day07 MyEclipse 安装 jdk5.0 新特性

1.myeclipse的安装和使用 * eclipse:是一个免费的开发工具    * myeclipse:是一个收费的插件,破解myeclipse,        ** 安装目录的要求: 不能有中文和空格        ** 安装完成之后,选择一个工作空间 ,这个工作空间不能有中文和空格    * 破解myeclipse        ** 运行run.bat文件,但是运行之前,必须要安装jdk,通过配置环境变量 * myeclipse的使用        * 创建一个工程          

黑马程序员_JavaSE学习总结第27天_反射 &amp; 设计模式 &amp; JDK5、7、8新特性

------- android培训.java培训.期待与您交流! ----------  27.01  反射_类的加载概述和加载时机 类的加载:当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载:就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数

JDK5.0新特性

JDK5中新增了很多新的java特性,利用这些新语法可以帮助开发人员编写出更加高效.清晰,安全的代码. 这些新特性主要有:1.静态导入2.自动装箱/拆箱3.增强for循环4.可变参数5.枚举6.泛型7.元数据 1.静态导入静态导入用于简化程序对静态属性和方法的调用 语法:Import static 包名.类名.静态属性|静态方法|*例如: import static java.lang.System.out import static java.lang.Math.* 2.自动装箱/拆箱自动装箱

java 基础加强(myeclipse,debug,junit,JDK5新特性,反射)

思维导图 1.myeclipse的安装和使用 *eclipse:是一个免费的开发工具 *myeclipse:是一个收费的插件,破解myeclipse, **安装目录的要求: 不能有中文和空格 **安装完成之后,选择一个工作空间 ,这个工作空间不能有中文和空格 *破解myeclipse **运行run.bat文件,但是运行之前,必须要安装jdk,通过配置环境变量 *myeclipse的使用 *创建一个工程 -类型 javaproject  web  project -选择依赖的jdk,可以使用my

Java API —— JDK5新特性

JDK5新特性 自动拆装箱.泛型.增强for.静态导入.可变参数.枚举   1.增强for概述 1)简化数组和Collection集合的遍历 2)格式: for(元素数据类型 变量 : 数组或者Collection集合) { 使用变量即可,该变量就是元素 } 3)好处:简化遍历 4)注意事项:增强for的目标要判断是否为null 例子1: package jdk5; import java.util.ArrayList; import java.util.List; /** * Created

Java JDK5.0新特性

JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, collection, map) 1> 格式 增强for循环括号里写两个参数 第一个是声明一个变量 第二个就是需要迭代的容器 for( 元素类型 变量名 : Collection集合 & 数组 ) { ... } 2> 增强for循环和传统for循环的区别 a. 增强for循环在使用时 必须要

JDK5的新特性之 增强for

  package cn.itcast.day19.foreach; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.ListIterator; /* * JDK5的新特性:自动拆装箱,泛型,可变参数,增强for,静态导入,枚举 * * 增强for:是for循环的一种 * * 格式: * for(元素数据类型 变量:数组或者Collection集合){