java 泛型 注解_Java中的泛型、枚举和注解

本文详细介绍了Java中的泛型,包括泛型的作用、声明与实例化,以及自定义泛型类的注意事项。同时,讲解了枚举的使用,包括JDK1.5之后的枚举特性,如何定义和使用枚举类。此外,还阐述了注解的定义和使用,以及其在代码中的重要性。
摘要由CSDN通过智能技术生成

1.泛型:

一、为什么要有泛型(Generic)?

1.解决元素存储的安全性问题

任何类型都可以添加到集合中:类型不安全

2.解决获取数据元素时,需要类型强转的问题

读取出来的对象需要强转:繁琐可能有ClassCastException

1.泛型的声明

interface List 和 class TestGen

其中,T,K,V不代表值,而是表示类型。这里使

用任意字母都可以。常用T表示,是Type的缩写。

2.泛型的实例化:

一定要在类名后面指定类型参数的值(类型)。如:

List strList = new ArrayList();

Iterator iterator = customers.iterator();

对象实例化时不指定泛型,默认为:Object

二、自定义泛型类

class Person{//使用T类型定义变量

privateT info;//使用T类型定义一般方法

publicT getInfo(){returninfo;

}public voidsetInfo(T info){this.info =info;

}//使用T类型定义构造器

publicPerson(){}publicPerson(T info){this.info =info;

}//static的方法中不能声明泛型//public static void show(T t){//}//不能在try-catch中使用泛型定义//try{}//catch(T t){}

}

三、通配符:

1.使用类型通配符:?

比如:List> ,Map,?>

List>是List、List等各种泛型List的父类。

2.不能直接向List>,Map,?>写入list中的元素。因为我们不知道元素类型,我们不能向其中添加对象。

唯一的例外是null,它是所有类型的成员

2.枚举:

JDK1.5之前需要自定义枚举类

JDK 1.5 新增的 enum 关键字用于定义枚举类

若枚举只有一个成员, 则可以作为一种单例模式的实现方式

枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰

枚举类的使用 private final 修饰的属性应该在构造器中为其赋值

若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数

《必须在枚举类的第一行声明枚举类对象

枚举类和普通类的区别:

使用 enum 定义的枚举类默认继承了 java.lang.Enum 类

枚举类的构造器只能使用 private 访问控制符

枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加 public static final 修饰

6ee1af8c9a8b2e2de321df4b76110351.png

枚举类的主要方法:

values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。

valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”(如上图中的“SPRING”)。如不是,会有运行时异常。

3.注解:

定义新的 Annotation 类型使用 @interface 关键字

Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明. 其方法名和返回值定义了该成员的名字和类型.

可以在定义 Annotation 的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字

public @interface MyAnnotation{

String name() default “lhf";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值