网站首页 > java教程 正文
介绍语
本头条号主要是Java常用关键技术点,通用工具类的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技术分享;datax、kafka、flink等大数据处理框架的技术分享。文章会不断更新,欢迎码友关注点赞收藏转发!
关注多的话,后面会录制一些视频教程,图文和视频结合,比如:图书介绍网站系统、抢购系统、大数据中台系统等。技术才是程序猿的最爱,码友们冲啊
正文
java的泛型非常重要,希望码友们多百度看多些泛型的相关文章。在各种框架中泛型的使用非常广泛和使用频率都非常高,在整个架构中起到非常重要的作用。下面直接来几个例子。
封装统一返回对象,用于项目中返回对象的外出统一包装
使用样例
System.out.println(JacksonMapper.toJsonString(MyResponseEntity.success()));
System.out.println(JacksonMapper.toJsonString(MyResponseEntity.error("发生错误")));
System.out.println(JacksonMapper.toJsonString(MyResponseEntity.success(new Person("李四", 12, true, new Date()))));
// {"code":20000,"msg":"","data":""}
// {"code":-1,"msg":"发生错误","data":""}
// {"code":20000,"msg":"","data":{"name":"李四","age":12,"sex":true,"birthday":"2019-09-05"}}
统一返回对象工具类
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
@ApiModel("响应报文体的包装")
public class MyResponseEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
public static final int SUCCESS = 0;
public static final int FAILURE = -1;
@ApiModelProperty(required = true, value = "操作结果,成功0、失败-1")
private int code;
@ApiModelProperty(required = false, value = "当失败时返回的信息")
private String msg;
@ApiModelProperty(required = false, value = "响应的业务数据")
private T data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public static <T> MyResponseEntity<T> success() {
MyResponseEntity<T> entity = new MyResponseEntity<>();
entity.setCode(SUCCESS);
return entity;
}
public static <T> MyResponseEntity<T> success(T data) {
MyResponseEntity<T> entity = success();
entity.setData(data);
return entity;
}
public static <T> MyResponseEntity<T> error(String message) {
MyResponseEntity<T> entity = new MyResponseEntity<>();
entity.setCode(FAILURE);
entity.setMsg(message);
return entity;
}
}
其它一些泛型的使用,泛型方法的使用
泛型方法1
public class Test {
public static void main(String[] args) {
System.out.println(Test.str2list("a","b","d"));
// [a, b, d]
System.out.println(Test.str2list(1,3,1,4));
// [1, 3, 1, 4]
}
// 泛型方法,注意参数
public static <E> List<E> str2list(E... args){
List<E> list = new ArrayList<>();
for (int i = 0; i < args.length; i++) {
list.add(args[i]);
}
return list;
}
}
方向方法2,注意参数
public class Test {
public static void main(String[] args) {
List<Child> list = new ArrayList<>();
Child child1 = new Child();
child1.setName("zhangsan");
child1.setAge(13);
list.add(child1);
Child child2 = new Child();
child2.setName("李四");
child2.setAge(20);
list.add(child2);
print(list);
// Child(age=13)
// Child(age=20)
/*
List<Person> list2 = new ArrayList<>();
print(list2); // list2是放不进print方法的,因为参数限制了必须为Parent类或者Parent的子
*/
}
public static void print(List<? extends Parent> childs) {
childs.forEach(child -> System.out.println(child.getName()));
}
}
如果把<? extends Parent>换成<? super Parent>呢?
这两种写法就是泛型的限定,限定类型的上限或下限:
? extends E 接收E类型或者E的子类型。
? super E 接收E类型或者E的父类型
好了,这个泛型的内容实在太多了,而且项目中用的非常多,一些工具类或者通用类基本都是泛型封装起来的,这里也只是介绍简单的内容,伙伴们想更加深入的了解泛型就自己百度下吧,相信度娘解释的比我清楚。(づ ̄ 3 ̄)づ
猜你喜欢
- 2024-11-13 Java面向对象三大特征:封装、继承、多态
- 2024-11-13 利用Java注解的简单封装,进行的一次优化
- 2024-11-13 如何封装原生的 Java NIO 以及扩展?详细到让你分分钟搞定Netty
- 2024-11-13 Java面向对象——基础2 封装、继承、多态
- 2024-11-13 想要 Spring Data JPA/MongoDB 更易用,你应该这样封装
- 2024-11-13 Java面向对象高级特性-封装(java面向对象三大特点)
- 2024-11-13 Java基础类型与封装类型的区别与联系
- 2024-11-13 java包装类的自动封装、自动拆箱和缓存
- 2024-11-13 java程序员必备的基础知识_java面向对象之封装(二)
- 2024-11-13 Java面试基础回顾03-封装(java基础面试题及答案)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)