关于java中的公共响应类

news/2024/7/4 0:50:27 标签: restful, java, 封装, class, 后端
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

BaseResponse公共响应类

class="language-class="tags" href="/tags/JAVA.html" title=java>java">package com.simple.dto;

/**
* 公共响应类
* @param <T>
*/
public class BaseResponse<T> {

private static final int CODE_SUCCESS = 200;
private static final int CODE_FAIL = 500;
private static final int CODE_ERROR = 500;
private static final int CODE_NO_LOGIN = 300;
private int code;
private String msg;
private T data;

public BaseResponse(int code, String msg, T data) {
this.setCode(code);
this.setMsg(msg);
this.setData(data);
}

public static <T> BaseResponse<T> success() {
return new BaseResponse<T>(CODE_SUCCESS, "success", null);
}
public static <T> BaseResponse<T> success(String message) {
return new BaseResponse<T>(CODE_SUCCESS, message, null);
}
public static <T> BaseResponse<T> success(T data) {
return new BaseResponse<T>(CODE_SUCCESS, "success", data);
}
public static <T> BaseResponse<T> success(String message, T data) {
return new BaseResponse<T>(CODE_SUCCESS, message, data);
}

public static <T> BaseResponse<T> error() {
return new BaseResponse<T>(CODE_ERROR, "fail", null);
}
public static <T> BaseResponse<T> error(String message) {
return new BaseResponse<T>(CODE_ERROR, message, null);
}
public static <T> BaseResponse<T> error(T data) {
return new BaseResponse<T>(CODE_ERROR, "fail", data);
}
public static <T> BaseResponse<T> error(String message, T data) {
return new BaseResponse<T>(CODE_ERROR, message, data);
}

public static <T> BaseResponse<T> badrequest() {
return new BaseResponse<T>(CODE_FAIL, "no identifier arguments", null);
}
public static <T> BaseResponse<T> badrequest(String message) {
return new BaseResponse<T>(CODE_FAIL, message, null);
}
public static <T> BaseResponse<T> badrequest(T data) {
return new BaseResponse<T>(CODE_FAIL, "no identifier arguments", data);
}
public static <T> BaseResponse<T> badrequest(String message, T data) {
return new BaseResponse<T>(CODE_FAIL, message, data);
}

public static <T> BaseResponse<T> noLogin(String message) {
return new BaseResponse<T>(CODE_NO_LOGIN, message, null);
}

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;
}

}

回顾一下泛型<T> 与 <?>:

jdk1.5以后引入了泛型的概念,即:<>,规定了集合中元素类型

比如下面代码:

class="language-class="tags" href="/tags/JAVA.html" title=java>java">List list1 = new ArrayList();
List<String> list2 = new ArrayList();

list1.add(1);

list1.add("1");

list2.add(1);//明显会报错

泛型规范了集合的元素的类型(让集合知道了自己应该装的是什么类型),不符合,编译不通过。

分别代表:T - Type, E - Element,N - Number

作用分析,如下

class="language-class="tags" href="/tags/JAVA.html" title=java>java">public class Demo01 {

@Test
public void test() {
Box<String> b = new Box<>();
b.get();
}
}
class Box<T>{
public T get(T t) {return t;}

}
  • Box类声明了泛型T,但是T的类型,是由引用者声明,一旦声明了T的类型,比如String;Box中的get方法的参数类型,返回值类型,也都是String。总而言之,该类中所有出现T的地方,都只接受T类型的参数。

<?>通配符:

    在类上声明 <?>,是没有意义的。
    表示不确定的类型

  • 等价于: <? extends Object>
  • 他叫作:类型通配符
  • 出现于方法的参数里
class="language-class="tags" href="/tags/JAVA.html" title=java>java">public static void getData(Box<?> data) {
System.out.println("data :" + data.getData());
}
  • 作用:限制参数类型,
    • <?>:限制参数类型为 Object和其子类(不知道或者不关心参数的具体类型);
    • <? extends Number> :限制参数类型为Number和其子类;
    • <? super Number> :限制参数类型为Number和其父类;

简单总结:

  • 作用在于声明整个类/接口,一旦使用了某种类型,该类/接口中,其余出现T的位置,也都是T类型;
  • <?>:是<? extends Object>简写,限制了某个方法传入参数的类型;
  • 通配符

        表示不确定的类型
        函数里面可以对T进行操作
        当变量表达两个参数之间或参数与返回值的关系,即两处被使用
        可以使用不同的大写字母(效果一样)

    场景

        ArrayList al=new ArrayList();指定集合元素只能是T类型
        ArrayList<?> al=new ArrayList<?>();集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法
        ArrayList<? extends E> al=new ArrayList<? extends E>();
        泛型的限定:
        ? extends E:接收E类型或者E的子类型。
        ?super E:接收E类型或者E的父类型。


http://www.niftyadmin.cn/n/800554.html

相关文章

ADO.NET添加

using System.Data.SqlClient; string ucode "";//开始 生成编号SqlConnection conn new SqlConnection("server.;databaseData0504;usersa;pwdlyb0629");SqlCommand cmd conn.CreateCommand();cmd.CommandText "select * from Users order by Uc…

数据库系列——删除命令delete、truncate、drop的使用与区别

delete、truncate、drop命令之间的区别 * 注&#xff1a;DML&#xff08;数据操作语言&#xff09; DDL&#xff08;数据定义语言&#xff09; deletetruncatedrop命令类型DMLDDLDDL功能 根据指定的SQL语句从表中删除单个或多个记录内容&#xff0c;但是不影响表结构&#x…

二叉树实现

二叉树实现 package com.work; /*** author: By yangbocsu* date: 2021-11-10* description:*/ public class Solution {public static void main(String[] args) {TreeNode t2 new TreeNode(2);TreeNode t3 new TreeNode(3);TreeNode root new TreeNode(1,t2,t3);System.ou…

如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?

作为.Net开发人员&#xff0c;其实对IIS的应用程序池知之甚少&#xff0c;在工作中我也有几次遇到过网站无故打不开的情况&#xff0c;找了半天原因也找不到是怎么造成的&#xff0c;有一次我给网站找了一个程序程序池后发现就能正常访问了&#xff0c;这也让我对辨别是问题产生…

java后端项目中的简单文件操作(文件的增删改查)

一、文件的上传与获取的流程&#xff1a; 先来看下项目各部分在文件操作过程中各自的职责&#xff1a; 部分职责前端数据上传的入口&#xff1b;文件展示的窗口后端上传后文件在生成记录&#xff08;文件id&#xff09;并在数据库中写入记录&#xff1b;通过数据库中的记录&a…

JVM系列——运行时数据区学习笔记

仅作个人学习笔记&#xff01; class文件——>ClassLoader SubSystem——>running data area ——>GC 本地方法栈、本地方法接口、本地方法库 虚拟机栈&#xff1a;方法1&#xff08;栈帧1&#xff09;、方法2&#xff08;栈帧2&#xff09; 方法区和堆是进程私有…

python中threading产生死锁_Python中死锁的形成示例及死锁情况的防止

死锁示例搞多线程的经常会遇到死锁的问题&#xff0c;学习操作系统的时候会讲到死锁相关的东西&#xff0c;我们用Python直观的演示一下。死锁的一个原因是互斥锁。假设银行系统中&#xff0c;用户a试图转账100块给用户b&#xff0c;与此同时用户b试图转账200块给用户a&#xf…

在mvc中弹出提示框

在传统的WebForm中&#xff0c;我们要弹出一个alert提示框非常简单&#xff0c;只要在页面中输出alert即可&#xff0c;比如输出&#xff1a; Response.Write("<script >alrer(我是弹出框);</script >") 或者在前台页面中定义script&#xff0c;然后后台…