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 ...
随机推荐
- ASP.NET Core如何禁用模型验证(或者从模型状态中移除某些属性)?
这是一篇4年前的文章:[经验分享]在ASP.NET Core中,如果禁用某个请求的模型验证? 事隔多年,又有网友问到这个问题.我就来重新整理一下,顺便扩展一下之前的解决办法. ===== 这是一个来自 ...
- nginx相关报错
# openresty -s reloadnginx: [warn] conflicting server name "community-gw.xxx.cn" on 0.0.0. ...
- Machine Learning - 笔记1
一.监督学习(supervised learning) 1.回归(regression) ①按我的理解来说,就是对于训练模型所用到的数据集,能够知道Input和Output的特征.比如 ...
- C# .NET 国密 SM2 签名 默认USER ID
C# .NET 国密 SM2 签名 默认USER ID: 1234567812345678 string userId = "1234567812345678"; byte[] b ...
- C#.NET rabbit mq 持久化时报错 durable
The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=406, text='PRECONDITI ...
- @RequestMapping 注解用在类上面有什么作用?
是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.
- Vue 打包相关
Vue 打包相关 vue-cli-service build# 用法:vue-cli-service build [options] [entry|pattern] 选项: --mode 指定环境模式 ...
- base64图片文件上传OSS,下载OSS图片转换为InputStream,文件转base64,base64转文件工具类
base64图片文件上传OSS,下载OSS图片转换为InputStream,文件转base64,base64转文件工具类 OSSUtils.java public class OSSUtils { p ...
- 记Codes 重新定义 SaaS模式开源免费研发项目管理平台——多事项闭环迭代的创新实现
1.简介 Codes 重新定义 SaaS 模式 = 云端认证 + 程序及数据本地安装 + 不限功能 + 30 人免费 Codes 是一个 高效.简洁.轻量的一站式研发项目管理平台.包含需求管理,任务管 ...
- C# .net core中如何将多张png图片合并成一个gif
背景 我们有很多这样的序列帧: 我这边要把这些序列帧裁切最后合并成gif,以下是我裁切后的png文件: 我一开始选用的是 SixLabors.ImageSharp 这是裁切代码: using var ...