Java-泛型,枚举,注解
1 泛型类
package demo;
public class FanXingLei {
public static void main(String[] args) {
// TODO 自动生成的方法存根
A<String> a1=new A<String>();//在new A的对象指定泛型的类型String
a1.serKey("xxxx");//对象使用serKey(T key)方法,中的key形参就是string
String s=a1.getKey();//T getKey(),返回值就有new对象确定返回值是string
A a2=new A();//不指定泛型,相当于制定了一个object类型
a2.serKey(new Object());
Object object=a1.getKey();
//同样的类,但是在new对象时泛型指定不同的数据类型,这些对象不能互相赋值
a1=a2;
}
}
class A<T>{
private T key;
public void serKey(T key) {
this.key=key;
}
public T getKey() {
return this.key;
}
}
2.泛型接口
package demo;
public class FanXingJieKou {
public static void main(String[] args) {
// TODO 自动生成的方法存根
B1<Object> b1=new B1<Object>();
B1<String> b2=new B1<String>();
B2 b3=new B2();
}
}
interface IB<T>{
T test(T t);
}
//未传入泛型实参时,与泛型类的定义相同,在声明类的时候,需要将泛型的声明一起加到类中
class B1<T> implements IB<T>{
public T test(T t) {
return t;
}
}
//如果实现接口时指定接口泛型的具体类型数据,这个类实现接口所有方法的位置都要泛型替换实际的具体数据类型
class B2<String> implements IB<String>{
public String test(String t) {
return t;
}
}
3.泛型方法
package demo;
public class FanXingFangFa {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Cc<Object> c=new Cc<Object>();
c.test("xxx");
//泛型方法,在调用之前没有固定的数据类型
//在调用时,传入参数是什么类型,就会把泛型改成是什么类型
//也就是说,泛型方法会在调用时确定泛型距离数据类型
Integer i=c.test1(2);
Boolean b=c.test1(true);//传递参数是Boolean,泛型就固定成Boolean,返回值就是Boolean
}
}
class Cc<E>{
private E e;
public static void test3() {
//在静态方法中,不能使用类定义泛型,如果要使用泛型,只能使用静态方法
// System.out.println(this.e);
}
//无返回值的泛型方法
public <T> void test(T s) {
//在类上定义的泛型,可以在普通的方法中使用
System.out.println(this.e);
T t=s;
}
//有返回值的泛型方法
public <T> T test1(T s) {
return s;
}
//形参为可变参数的泛型方法
public <T> void test2(T...strs) {
for(T s:strs) {
System.out.println(s);
}
}
}
4.泛型通配符 ?
5.枚举
package meiju;
public class Test1 {
public static void main(String[] args) {
//这段代码就是获取一个Season对象
Season spring=Season.SPRING;
spring.showInfo();
Season spring2=Season.SPRING;
System.out.println(spring2.equals(spring));
}
}
enum Season{
SPRING("春天","春暖花开"),//此处返回的是一个枚举对象,此处相当于调用有参的私有构造private Season(String name,String desc)
SUMMER("夏天","炎炎夏日"),
AUTUMN("秋天","秋高气爽"),
WINNER("冬天","寒风瑟瑟");
private final String name;
private final String desc;
private Season(String name,String desc) {
this.name=name;
this.desc=desc;
}
public void showInfo() {
System.out.println(this.name+":"+this.desc);
}
}
6.注解
@Override:限定重写父类方法,该注释只能用于方法
@Deprecated:用于表示某个程序元素(类,方法等)已过时
@SuppressWarnings:抑制编译器警告
Java-泛型,枚举,注解的更多相关文章
- Java笔记--枚举&注解
1.自定义枚举类的实现,例: class Season{ //1,提供类的属性,声明为rivate final private final String name; private final Str ...
- Java笔记---枚举类和注解
Java笔记---枚举类和注解 一.枚举类 自定义枚举类 方式一:JDK5.0之前自定义枚举类 class Seasons { //1. 声明Seasons对象的属性 private final St ...
- Spring课程 Spring入门篇 4-8 Spring bean装配之基于java的容器注解说明--基于泛型的自动装配
1 解析 1.1 什么是泛型? 1.2 泛型有什么作用? 1.3 泛型装配样式? 2 代码演练 2.1 泛型应用 1 解析 1.1 什么是泛型? Java泛型设计原则:只要在编译时期没有出现警告,那么 ...
- Java泛型总结
1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的 ...
- 十八、泛型 l 注解 l Servlet3.0 l 动态代理 l 类加载器基础加强
l 泛型 l 注解 l Servlet3.0 l 动态代理 l 类加载器 泛型 1 回顾泛型类 泛型类:具有一个或多个泛型变量的类被称之为泛型类. public class A<T> { ...
- 【转】JAVA反射与注解
转载自:https://www.daidingkang.cc/2017/07/18/java-reflection-annotations/ 前言 现在在我们构建自己或公司的项目中,或多或少都会依赖几 ...
- Java中的注解基础
一.元注解 元注解的作用就是负责注解其他注解. 1.@Target @Target用来指明注解所修饰的目标,包括packages.types(类.接口.枚举.Annotation类型).类型成员(方法 ...
- [转] Java @interface 自定义注解
[From] http://blog.csdn.net/afterlife_qiye/article/details/53748973 1. 注解的好处 注解可以替代配置文件完成对某些功能的描述,减少 ...
- Java基础学习总结(83)——Java泛型总结
1. 什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型 ...
- [转帖]Java高级系列——注解(Annotations)
Java高级系列——注解(Annotations) 2018年01月13日 :: RonTech 阅读数 3405更多 所属专栏: Java高级系列文章 版权声明:转载请注明出处,谢谢配合. http ...
随机推荐
- 用 C 语言开发一门编程语言 — S-表达式
目录 文章目录 目录 前文列表 使用 S-表达式进行重构 读取并存储输入 实现 S-Expression 语法解析器 实现 S-Expression 存储器 实现 lval 变量的构造函数 实现 lv ...
- C 语言编程 — 逻辑控制语句
目录 文章目录 目录 前文列表 结构化程序设计 条件分支语句 if/else 语句 if 语句 if/else 语句 if/else-if/else 语句 嵌套 if 语句 switch 语句 swi ...
- jupyter notebook无法找到自己的虚拟环境
1:打开cmd/Anaconda Prompt/Anaconda Powershell Prompt 2:进入虚拟环境conda activate 环境名 3:conda list查看有无ipyker ...
- WPF DataGrid使用 自动显示行号、全选、三级联动、拖拽
1.DataGrid的使用自动显示行号(修复删除行时行号显示不正确) dgTool.LoadingRow += new EventHandler<DataGridRowEventArgs&g ...
- C++笔记(13)数组的引用和引用的数组
数组的引用 数组有二个特性,影响作用在数组上的函数:一是不能复制数组,二是使用数组名时, 数组名会自动指向其第一个元素的指针. 因为不能复制,所以无法编写使用数组类型的形参,数组会自动转化为指针.比如 ...
- 使用Jsoup和htmlunit爬取动态网页
在对http://zkgg.tjtalents.com.cn/newzxxx.jsp这个网页爬取内容时,如果只使用Jsoup进行解析的话,起内部的a href标签内容无法获取到. 但是实际上通过 Do ...
- kettle从入门到精通 第二十一课 kettle Carte服务器
1.相关配置文件 jdbc.properties保存在simple-jndi目录下,这个文件用来存储JNDI连接对象的连接参数.Kettle可以用JNDI的方式来引用JDBC连接参数,如IP地址.用户 ...
- 利用ADB获取APP资源
最近小编经常受到失眠的困扰,因为在编写一个安卓体能评定的软件,同时又在构思一个桌面管理应用,不管是构想还是操作上都遇到了很多难题,所以寄希望于小编手机上的一款软件,因为版权问题,就不说出它叫啥名字了. ...
- Vue学习:10.v标签综合-进阶版
再来一节v标签综合... 实例:水果购物车 实现功能: 显示水果列表:展示可供选择的水果列表,包括名称.价格等信息. 修改水果数量:允许用户在购物车中增加或减少水果的数量. 删除水果:允许用户从购物车 ...
- springmvc组件说明
DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度. HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应 ...