valueOf 方法可以将原生数值类型转化为对应的Number类型,java.lang.Number 基类包括ouble、Float、Byte、Short、Integer 以及 Long派生类,
也可以将string,原始数值转化为String对象
还可以将字符串转化为对应的枚举对象(实际是 根据枚举变量的name来获取枚举变量的值)
Java中泛型Class<T>、T与Class<?>
一.区别
单独的T 代表一个类型 ,而 Class<T>代表这个类型所对应的类, Class<?>表示类型不确定的类
E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定的java类型 举例说明: Set<T> 表示 集合里 是 T类的实例 List<E> 表示 集合里 是 E类的实例 List<?> 表示 集合里的对象类型不确定,未指定 List 同 List<?> 是一样的。 泛型的作用: 1、用泛型: Java代码 收藏代码 List<T> list=new ArrayList<T>(); T t=list.get(0); 2、不用泛型: Java代码 收藏代码 List list=new ArrayList(); T t=(T)list.get(0);
二、如何创建一个Class<T>类型的实例?
就像使用非泛型代码一样,有两种方式:调用方法 Class.forName() 或者使用类常量X.class。 Class.forName() 被定义为返 回 Class<?>。另一方面,类常量 X.class 被定义为具有类型 Class<X>,所 以 String.class 是Class<String> 类型的。
三、方法中为什么需要<T> T修饰呢
泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。
public static <T> T request2Bean(HttpServletRequest request,Class<T> clazz){}
其中第一个<T>是与传入的参数Class<T>相对应的,相当于返回值的一个泛型,后面的T是返回值类型,代表方法必须返回T类型的(由传入的Class<T>决定)
四、java枚举类型enum值与整数的转换
java编程中偶尔会用到枚举,为了直观,我们通常将枚举值设置为形象的单词,方便理解和使用。枚举类型相当于数据库
中字典表,但是枚举只有字典表的值,缺少其他用来表示和值一一对应的字段,当我们在数据库中保存一个对应枚举类型
的列,我们希望保存的是类似0,1,2,3,4这样的数字,然后,表现在实体对象中,我们希望看到的是具有语义并且形象的字
符串,因此编码过程中,我们会对枚举的值做一个映射。定义枚举语法如下:
public enum APPTYPE {
install,
download,
click,
datareport
feedback
}
这样,一个枚举类型的变量APPTYPE就声明好了。接下来就会使用这个枚举类型。枚举类型对外提供了这样几个方法。
values():返回枚举值的数组
ordinal():返回枚举值在枚举元素数组中的下标
name():返回枚举值的字符串,相当于toString(),枚举的名称和枚举的值一样,一个是字符串类型,一个枚举类型
通过这几个方法我们可以方便来对枚举值和整数做映射。
例如我们想知道click对应的整数,可以通过APPTYPE.click.ordinal(),得到整数2
想知道3对应枚举中的值,可以通过APPTYPE.values()[3]来得到。
枚举相当于class,每个枚举项是通过枚举的private构造函数构造出来的实例