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 ...
随机推荐
- Springboot 项目集成 PageOffice V6 最简单代码
本文描述了PageOffice产品在Springboot项目中如何集成调用.(本示例使用了Thymeleaf模板引擎) 新建Springboot项目:pageoffice6-springboot2-s ...
- 逆向WeChat (二)
本篇在博客园的地址https://www.cnblogs.com/bbqzsl/p/18187099 回顾一下现时网上的资源. 原生 https://github.com/duilib, Ultima ...
- zabbix使用
安装部署6.0版本 获取仓库 https://www.zabbix.com/cn/download?zabbix=6.0&os_distribution=centos&os_versi ...
- Pytorch:以单通道(灰度图)加载图片
以单通道(灰度图)加载图片 如果我们想以单通道加载图片,设置加载数据集时的transform参数如下即可: from torchvision import datasets, transforms t ...
- kubernets之了解Qos等级
一 Qos的种类 BestEffort(优先级最低) Burstable(中等优先级) Guaranteed(最高优先级) 二 Qos的作用 众所周知,节点上面的limits允许超卖,当节点上面的 ...
- C# XML转Json Json转XML XML 转对象 对象转XML
对象转XML对象时,只能是一个JObject对象,不能是一个集合对象.如果对象是一个列表集合,需要定义一个根对象比如这样:var obj =new { Root = ListLogs[ListLogs ...
- redis 使用lua脚本 一次性获取多个hash key 字段值
客户端命令行代码: eval "local rst={};local field='schoolid'; for i,v in pairs(KEYS) do rst[i]=redis.cal ...
- Android 12(S) MultiMedia Learning(四)MediaPlayerService
getMediaPlayerService方法获取到的是media.player服务 IMediaDeathNotifier::getMediaPlayerService() { // ...... ...
- 《剑指offer - 题目1》
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- c# webApi返回Excel数据流 || 使用Excel数据流的方式下载Excel
背景: 在前端无法生成特殊的excel表格,或操作复杂的时候会通过后台进行生成excel.但是服务器的资源也非常宝贵,所以通过数据流的方式就可以实现:不在服务器存储的情况下,使前端成功下载excel文 ...