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 ...
随机推荐
- Agile PLM数据库表结构(Oracle)
刚进公司,任务是接管PLM系统,但是还在给外包团队开发,没有代码.无妨先看业务和数据库,ok,业务看不懂,只能先看数据库,数据库没有数据字典,这个系统没有任何文档产出......练手时发现数据库类型是 ...
- MindSponge分子动力学模拟——自定义控制器(2024.05)
技术背景 分子动力学模拟中的控制器(Controller)可以被用于修改模拟过程中的原子坐标和原子速度等参量,从而达到控制系统特定参量的目的.例如控温器可以用于实现NVT系综,控压器可用于实现NPT系 ...
- Kubernetes集群中配置Ingress支持HTTPS访问(一):cfssl
目录 一.系统环境 二.前言 三.对称加密和非对称加密简介 四.什么是HTTPS 五.Ingress简介 六.配置ingress对外发布服务 6.1 安装NGINX ingress controlle ...
- c#笔记(3) 委托回调
委托回调是刚接触c#时最头疼的东西,老看老忘,遂整理一下现在对委托回调的理解.如有错误,请指出,感谢. 委托 C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托是存有对某个方 ...
- Pod安全策略:PodSecurityPolicy(PSP)
目录 一.系统环境 二.前言 三.PodSecurityPolicy 简介 四.为什么需要 PodSecurityPolicy 五.给客户端授权 六.启用PodSecurityPolicy(PSP) ...
- WPS相关技巧
1 标题自动编号 首先,新建一个空白word,打开.点击默认的标题样式,可以看到并不会自动编号. 接下来,就设置如何自动编号.首先选择"编号". 然后,选择"多级编号&q ...
- C#异步编程是怎么回事(番外)
在上一篇通信协议碰到了多线程,阻塞.非阻塞.锁.信号量...,会碰到很多问题.因此我感觉很有必要研究多线程与异步编程. 首先以一个例子开始 我说明一下这个例子. 这是一个演示异步编程的例子. 输入jo ...
- 腾讯视频遇到“前设备播放4K可能引发卡顿等异常,建议降低清晰度”
腾讯视频遇到"前设备播放4K可能引发卡顿等异常,建议降低清晰度". 解决方法: 在菜单-设置-播放设置-勾选"开启硬件加速"-应用,然后退出腾讯视频,重新打开腾 ...
- 高并发缓存中间件Redis
https://tech.meituan.com/2020/07/01/kv-squirrel-cellar.html 美团万亿级 KV 存储架构与实践 阿里云 redis文档 https://hel ...
- Scrapy框架(三)--全站数据爬取
scrapy基于Spider类的全站数据爬取 大部分的网站展示的数据都进行了分页操作,那么将所有页码对应的页面数据进行爬取就是爬虫中的全站数据爬取.基于scrapy如何进行全站数据爬取呢?1.将每一个 ...