Java 泛型&类库&枚举&反射机制 要点

发布于:2023-01-04 ⋅ 阅读:(240) ⋅ 点赞:(0)

一、泛型

1、泛型可以使程序的操作更加安全,可以避免发生类转换异常。

2、在程序中如果使用类时没有指定泛型,则泛型将被擦除掉,将使用Object接收参数。

3、可以使用通配符“”接收全部的泛型类型对象。

4、通过<?extends类>可以设置泛型的上限,通过<?super类>可以设置泛型的下限。

5、泛型方法可以定义在泛型类中,也可以定义在普通类中。

6、泛型可以在接口中定义,实现泛型接口的子类要指明具体的泛型类型。

7、泛型可以嵌套使用。

8、在程序中定义没有方法的接口,这样的接口一般称为标识接口。

二、常用类库

1、在一个字符串内容需要频繁修改时,使用StringBuffer可以提升操作性能,因为 StringBuffer内容可以改变,而String内容不可以改变。

2、StringBuffer类中提供了大量的字符串操作方法,如增加、替换、插入等。

3、Runtime表示运行时在一个JVM中只存在一个Runtime,所以如果要想取得 Runtime类的对象,直接使用Runtime类中提供的静态方法getRuntime()即可。

4、国际化程序实现的基本原理为:所有的语言信息以key—>value的形式保存在资源文件之中,程序通过key找到相应的value,根据其所设置国家的Locale对象不同,找到的资源文件也不同。要想实现国际化必须依靠LocaleResourceBundle两个类共同完成。

5、System类是系统类,可以取得系统的相关信息,使用System.gc()方法可以强制性地进行垃圾的收集操作,调用此方法实际上就是调用了Runtime类中的gc()方法。

6、Format类为格式化操作类,主要的3个子类是MessageFormatNumberFormatDateFormat

7、使用Date类可以方便地取得时间,但取得的时间格式不符合地域的风格,所以可以使用SimpleDateFomat类进行日期的格式化操作。

8、处理大数字可以使用BiglntegerBigDecimal类,当需要精确小数点操作位数时应使用BigDecimaI类。

9、通过Random类可以取得指定范围的随机数字。

10、如果一个类的对象要被克隆,则此对象所在的类必须实现Cloneable接口。

11、要对一组对象进行排序,则必须使用比较器,比较器接口Comparable中定义了compareTo()的比较方法,用来设置比较规则。

12、正则表达式是开发中最常使用的一种验证方法,String类中的replaceAll()split()matches()方法都对正则有所支持。

13、可以使用TimeTimeTask类完成系统的定时操作。

三、枚举

1、在程序中可以使用一个枚举来指定对象的取值范围。

2、在Java中使用enum关键字定义一个枚举类,每一个枚举类都是继承Enum类

3、在枚举中可以通过values()方法取得枚举中的全部内容。

4、在枚举类中可以定义构造方法,但在设置枚举范围时必须显式地调用构造方法。

5、所有的枚举类都可以直接使用Comparable进行排序,因为Enum类实现了Comparable接口。

6、Java类集中提供枚举的支持类是EnumMapEnumSet

四、Java反射机制

1、Class类是反射机制操作的源头。

2、Class类的对象有3种实例化方式:
(1)通过Object类中的getClass()方法。
(2)通过“类.class ”的形式。
(3)通过Class.forName()方法,此种方式最为常用。

3、可以通过Class类中的newInstance()方法进行对象的实例化操作,但是要求类中必须存在无参构造方法,如果类中没有无参构造,则必须使用Constructor类完成对象的实例化操作。

4、可以通过反射取得一个类所继承的父类、实现的接口、类中的全部构造方法、全部普通方法及全部属性。

5、使用反射机制可以通过Method调用类中的方法,也可以直接操作类中的属性。

6、动态代理可以解决开发中代理类过多的问题,提供统一的代理功能实现。

7、在程序的开发中使用反射机制并结合属性文件,可以达到程序代码与配置文件相分离的目的。

本文含有隐藏内容,请 开通VIP 后查看