泛型与枚举

Posted macro-renzhansheng

tags:

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

1:集合当中使用泛型:

【1】统一集合当中的数据类型,更方便的操作数据。

【2】参数化的类型

【3】规定要操作的数据类型

2:泛型类||泛型方法||泛型接口

【1】泛型表示:大写字母

【2】默认为object;自定义 T E V K

[!]:泛型方法与泛型类中的方法区别

     泛型形参   &&&  泛型实参

【3】通常来说:不会对泛型方式传入的数据操作!|||用反射也是特殊场景。【本身对操作什么数据类型不明确!

【4】泛型鳄梨和泛型接口的泛型,在实现或者继承的情况下,重写或者结成的方法,泛型参数和返回值类型必须保证类型一致。

【5】泛型接口必须指定,而实现类可以不必指定!如果不指定,则沿用其接口的泛型类型。

3:泛型通配符 <?> :既可以规定泛型形参,也可以规定泛型实参!

[1]? 代表任意泛型; ?是泛型实参,不是泛型形参!

<? extends Number>

<? super Object>

??<? implements C>

4:泛型方法:该方法的泛型是独立在当前方法当中,不与该类当中的其他方法公用同一个类型。

【1】在方法的修饰符和返回值之间声明。

枚举:不建议使用!!

【1】枚举的构造必须是私有的!构造是针对所有的枚举的元素。

【2】每一个枚举的元素都相当于一个类。

【3】枚举中的类型是单例,有几个类型创建几个单例。

【4】枚举元素(T t)---对应相应的构造方法!

-接口组织枚举

--枚举常见的问题:

【1】有可能会大量产生单例{非致命的问题}

【2】在网络当中,枚举和很多主流的数据结构不兼容。{web开发中}

异常的本质:标识!

【1】捕获异常

【!】不要把一个代码块中所有的代码都放在一个try…catch 代码块中捕获异常中!

【2】自动抛出异常

{!}异常最终抛无可抛,则必须进行处理。

在中途被处理过的异常,则调用者就不必再处理了。

【3】手动抛出异常

---根据使用者的实际情况!

---运行时异常不是必须被处理的!

---checked异常时必须被处理的异常!


[4]自定义异常

---创建一类类,符合异常命名规范

包装类:

【1】Java当中,JDK为基本数据类型设定了包装类。——集合中必须用包装类

【2】NumberFormatException:对于数值,其包装类型的构造和方法当中,如果用了不属于数值的书写方式,报前所述异常。ex: “123aabc” 、 “123L”、”234D”等

【3】字符的包装类型,只有其本身类型的构造,没有字符串类型参数的构造。ex: ‘A’ ;

【4】布尔类型的包装类: s!=null && s.equalsIgnoreCase(“true”);才会返回 true.否则,任意其他类型或NULL 为 false.

包装类性的方法:

【1】XXvalue():包装类变为基本数据类型。 intValue()、byteValue(){对象调用 }

【2】Integer.toString(123) || 对象.toString()  ||  123+””

【3】Integer.parseInt(“123”)   将字符串变为基本数据类型

【4】Integer.valueOf(123)   || Integer.valueOf(“123”)   把基本数据类型或者字符串变为包装类型

自动装箱、自动拆箱

---针对自己的框架设计相应的包装类型,如 Hadoop当中

【5】在尾部工程当中的实体类,其中作为参数的数值类型,通常都定义为包装类,因为包装类型有 null值。

字符串

【1】直接以双引号赋值,相当于常量。常量之间是相等的;

【2】new出来的String对象存在于堆内存中,所以不可以与常量比较。

【3】字符串对象.intern(),相当于一个常量。

static常量,内存唯一

【4】字符串的本质:char[]数组

【5】equals(Object obj)源码

    (1)instanceOf String

    (2)比较长度

  (3)遍历数组

【6】替换元素:replaceAll的匹配规则——正则表达式

【7】注意: . 比较特殊,需要转义。

ex: 字符串对象.split(“\.”)

【8】获取字符串编码:以UTF-8的格式,获取当前字符串编码集

String string = new String(str1.getBytes(“UTF-8”),”ISO-8859-1”);

【9】字符串的拼接本质是操作数组,所以可以类比 ArrayList.add()grow()

---StringBuffer、StringBuilder,是一种高效扩展string对象。


在实际的web开发当中,我们的应用,通常是被分配到某一个单独的线程里,除非他们处于常量状态,或者单例模式,使用StringBuffer。

SimpleDateFormat

sdf = new SimpleDateFormat(str formate);

sdf.formate(Date date)

Date dt = new Date();

SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); return myFmt.format(dt);

sdf.parse(str_date)


使用Calendar的原因:

-Calendar为单例模式

-Date不唯一,程序执行中的生成Date对象的时间比较基准不唯一!


以上是关于泛型与枚举的主要内容,如果未能解决你的问题,请参考以下文章

枚举和泛型

枚举和泛型

Java枚举与泛型

Dart语言:枚举泛型

2022-08-01 第八组 曹雨 泛型 枚举

Dart学习笔记-枚举与泛型