精华内容
下载资源
问答
  • java实体类为什么要写.toString()方法

    万次阅读 2018-08-09 10:13:28
    java实体类重写.toString()方法... 笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里记录一下...

    转载自:https://blog.csdn.net/itbiggod/article/details/79290332

    java实体类重写.toString()方法

    1. 前言 
      笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里记录一下。

    2. 了解 
      在Java中每个类都默认继承Object类,除非声明继承于某个类。 
      而toString 方法来自于Object 类,作用是: 
      返回一个字符串,是该Java对象的内存地址经过哈希算法得出的int类型的值在转换成十六进制。。 
      换句话说,该方法返回一个字符串,它的值大概就是等于: 
      getClass().getName()+’@’+Integer.toHexString(hashCode()) 
      这是一个内存地址经过哈希算法得出的int类型的值在转换成十六进制的东西。等同的看作Java对象在堆中的内存地址。 
      例如:

    package com.zout.toString;  
    public class Test {  
        public static void main(String[] args){  
            Object zt = new Object();  
            System.out.println(zt.toString());  
        }  
    }  
    输出结果:java.lang.Object@7852e922  

    这是直接使用tostring的时候返回的东西。 
    3. 实验 
    那么在定义一个实体类后,不写tostring,返回的结果又会是什么呢? 
    新建toStringTest.java:

    package demoTest_zt;
    /**
     *@class_name:toStringTest  
     *@param: java实体类重写tostring方法的测试
     *@return: 
     *@author:Zoutao
     *@createtime:2017年9月11日
     */
    public class toStringTest {
    
            private String name;
            private String sex;
            private int No;
    
            public void Show(){
                System.out.println("这是没有tostring重写实体类的时候!");
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public String getSex() {
                return sex;
            }
            public void setSex(String sex) {
                this.sex = sex;
            }
            public int getNo() {
                return No;
            }
            public void setNo(int no) {
                this.No = no;
            }
        }

    再写一个Ceks_tostring.java主函数调用:

    package demoTest_zt;
    /**
     *@class_name:toStringTest  
     *@param: java实体类重写tostring方法的测试调用
     *@return: 
     *@author:Zoutao
     *@createtime:2017年9月11日
     */
    public class Ceks_tostring {
        public static void main(String[] args) {
            Class<?> demo= null;
            try {
                //包-类路径   demo=Class.forName("demoTest_zt.Ceks_tostring");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            toStringTest test= new toStringTest();
            test.setName("zout");
            test.setNo(001);
            test.setSex("man");
            test.Show(); 
            System.out.println("调用实体类返回的是:" +test);    
        }
    }

    运行结果:

    这是没有tostring重写实体类的时候!
    调用实体类返回的是:demoTest_zt.toStringTest@15db9742
    •  

    很显然这要是在项目开发的时候,不应该是一串看不懂的数字,而应该是符合逻辑的东西;

    接下来测试带有tostring方法的时候,Object中的toString方法就要被重写。 
    在toStringTest.java的最底下添加toString方法:

        //重写tostring方法
            @Override
            public String toString() {
                return "toStringTest [name=" + name + ", sex=" + sex + ", No=" + No + "]";
            } 

    然后在运行主函数测试: 
    输出结果:

    这是有tostring重写实体类的时候!
    调用实体类返回的是:toStringTest [name=zout, sex=man, No=1]

    返回的就是我们正常的业务代码。这也就是为什么我们在写java实体类的时候,往往要返回的是对象和值,所以习惯性都要加一个tostring方法的原因; 
    4. 总结 
    重写toString,object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码。 
    如果在类中没有重写ToString方法,默认使用的是Object的toString方法输出格式。这个时候,对象就会直接显示hash码。 
    如果在类中重写toString方法,那么输出格式就会按照我们定义的方式输出这个对象,因此可以这样理解: 
    重写toString是对对象在打印输出时候的一种格式化。这样做符合业务逻辑,显示结果人性化。 
    当你print一个对象是你需要这个对象在打印时展现的是什么形态你就把toString重写成你需要的返回形态。

     

    展开全文
  • java实体类为什么要写.toString()方法?

    千次阅读 多人点赞 2018-02-08 15:34:28
    笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里记录一下。 了解 在Java中每个类都默认...

    java实体类重写.toString()方法

    1. 前言

    笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里记录一下。

    2. 了解

    在Java中每个类都默认继承Object类,除非声明继承于某个类。
    而toString 方法来自于Object 类,作用是:
    返回一个字符串,是该Java对象的内存地址经过哈希算法得出的int类型的值在转换成十六进制。

        换句话说,该方法返回一个字符串,它的值大概就是等于:
    

    getClass().getName()+’@’+Integer.toHexString(hashCode())

    这是一个内存地址经过哈希算法得出的int类型的值在转换成十六进制的东西。等同的看作Java对象在堆中的内存地址。
    例如:

    package com.zout.toString;  
    public class Test {  
        public static void main(String[] args){  
            Object zt = new Object();  
            System.out.println(zt.toString());  
        }  
    }  
    
    输出结果:java.lang.Object@7852e922  
    

    这是直接使用tostring的时候返回的东西。

    3. 实验

     那么在定义一个实体类后,不写tostring,返回的结果又会是什么呢?
    

    新建toStringTest.java:

    package demoTest_zt;
    /**
     *@class_name:toStringTest  
     *@param: java实体类重写tostring方法的测试
     *@return: 
     *@author:Zoutao
     *@createtime:2017年9月11日
     */
    public class toStringTest {
    
    	    private String name;
    	    private String sex;
    	    private int No;
    	    
    	    public void Show(){
    	        System.out.println("这是没有tostring重写实体类的时候!");
    	    }
    	    public String getName() {
    	        return name;
    	    }
    	    public void setName(String name) {
    	        this.name = name;
    	    }
    	    public String getSex() {
    	        return sex;
    	    }
    	    public void setSex(String sex) {
    	        this.sex = sex;
    	    }
    	    public int getNo() {
    	        return No;
    	    }
    	    public void setNo(int no) {
    	        this.No = no;
    	    }
    	}
    

    再写一个Ceks_tostring.java主函数调用:

    package demoTest_zt;
    /**
     *@class_name:toStringTest  
     *@param: java实体类重写tostring方法的测试调用
     *@return: 
     *@author:Zoutao
     *@createtime:2017年9月11日
     */
    public class Ceks_tostring {
    	public static void main(String[] args) {
    	    Class<?> demo= null;
    	    try {
    	    	//包-类路径   demo=Class.forName("demoTest_zt.Ceks_tostring");
    	    } catch (ClassNotFoundException e) {
    	        e.printStackTrace();
    	    }
    	    toStringTest test= new toStringTest();
    	    test.setName("zout");
    	    test.setNo(001);
    	    test.setSex("man");
    	    test.Show(); 
    	    System.out.println("调用实体类返回的是:" +test);    
    	}
    }
    

    运行结果:

    这是没有tostring重写实体类的时候!
    调用实体类返回的是:demoTest_zt.toStringTest@15db9742
    

    很显然这要是在项目开发的时候,不应该是一串看不懂的数字,而应该是符合逻辑的东西;

    接下来测试带有tostring方法的时候,Object中的toString方法就要被重写。
    在toStringTest.java的最底下添加toString方法:

        //重写tostring方法
    		@Override
    		public String toString() {
    			return "toStringTest [name=" + name + ", sex=" + sex + ", No=" + No + "]";
    		} 
    

    然后在运行主函数测试:
    输出结果:

    这是有tostring重写实体类的时候!
    调用实体类返回的是:toStringTest [name=zout, sex=man, No=1]
    

    返回的就是我们正常的业务代码。这也就是为什么我们在写java实体类的时候,往往要返回的是对象和值,所以习惯性都要加一个tostring方法的原因;

    4. 总结

    重写toString,object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码。

    如果在类中没有重写ToString方法,默认使用的是Object的toString方法输出格式。这个时候,对象就会直接显示hash码。

    如果在类中重写toString方法,那么输出格式就会按照我们定义的方式输出这个对象,因此可以这样理解:
    重写toString是对对象在打印输出时候的一种格式化。这样做符合业务逻辑,显示结果人性化。
    当你print一个对象是你需要这个对象在打印时展现的是什么形态你就把toString重写成你需要的返回形态。


    事非干己休多管,话不投机莫强言。——冯梦龙《醒世恒言》

    展开全文
  • 估计很多入门安卓的朋友对entity很困惑,为什么要写实体类?有什么用?写来干什么?对于实体类的理解我入门的时候也是困惑了好久,后面用多了才慢慢理解,这篇博客就当复习和笔记。Java中entity(实体类)的写法规范在...

    估计很多入门安卓的朋友对entity很困惑,为什么要写实体类?有什么用?写来干什么?

    对于实体类的理解我入门的时候也是困惑了好久,后面用多了才慢慢理解,这篇博客就当复习和笔记。

    Java中entity(实体类)的写法规范

    在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法。entity(实体类)的作用一般是和数据表做映射。所以快速写出规范的entity(实体类)是java开发中一项必不可少的技能。

    在项目中写实体类一般遵循下面的规范:

    1、根据你的设计,定义一组你需要的私有属性。

    2、根据这些属性,创建它们的setter和getter方法。(eclipse等IDE可以自动生成。具体怎么生成?请自行百度。)

    3、提供带参数的构造器和无参数的构造器。

    4、重写父类中的eauals()方法和hashcode()方法。(如果需要涉及到两个对象之间的比较,这两个功能很重要。)

    对Java实体类的众多理解:

    A .就是属性类,通常定义在model层里面

    B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。

    好处:

    1.对对象实体的封装,体现OO思想。

    2.属性可以对字段定义和状态进行判断和过滤

    3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。

    C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句

    D. 就是一个数据库表生成一个类

    这样做对数据库操作起来方便

    编写代码较少 提高效率 可以使程序员专注逻辑关系

    E. 实体类就是把对某一个表的操作全写在一个类中.

    F. 在Java开发中经常要定义一些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度,

    以下是别人总结的一些经验。

    一、实体类的名字尽量和数据库的表的名字对应相同。

    二、实体类应该实现java.io.Serializable接口。

    三、实体类应该有个无参的构造方法。

    四、实体类应该有个有参(所有的参数)的构造方法。

    五、实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法。

    六、实体类还应该有个属性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;

    七、属性一般是private类型,方法位public类型,对于数据库自动生成的ID字段对应的属性的set方法应为private。

    G. 实体类中都是实例对象,实例对象在jvm的堆区中开辟了一个该对象引用空间,并且让该引用指向某个实例,类声明只是在jvm的栈去中开辟了一个该对象引用,没有让该引用做任何指向.

    例如 :

    1.String str;

    2.String str = new String (“dgfgg”);

    1中的只是一个引用,说明str应该指向一个String 类型的实例,但还没对str和堆区的实例做具体的指向.也就是说它还没有指向某个实例.

    而2中的即定义了一个引用(str)又对str做了具体的指向,它指向的内容就是后面new出来的String 实例.

    实体类中的构造方法+set方法+get方法:

    构造函数:初始化成员变量

    get,set方法,获取和改变成员变量的值,JavaBean规范规定只使用get/set访问成员变量

    构造函数:你每次写一个Java文件,实际上都写了一个类(创建一个类,jvm就会自动为这个类开辟一块内存空间)。有了类就需要有类对象,要产生类对象就需要构造函数对这个刚刚申请的内存空间做一点事,赋属性值之类的工作。当然,如果你不写,它就默认有一个Class(){}的构造方法出现,当然它什么活也不干。

    你的属性是什么样的?public?private?默认?还是protected?这四种你找教材务必弄懂分清,很有用。如果是private,这种属性不许别的对象改和读,但有时候需要改/读,怎么办?写一个public void setAbc(xxx){}和一个public xxx getAbc(){}就实现外部读写属性的功能了。

    set ,get完全是自我规定的,就是设置初值和获得值的意思.你也可以修改成其他字符.但是用set ,get还是要好些,因为你能通过单词理解你写的代码的意思,方便阅读而已。

    总结:实体是就是Java中的O/R Mapping映射,即数据库中的一个表映射成对应的一个Java类,其中还有一个映射文件。给定一个较复杂的实体关系(如一对一,一对多,多对多),应该熟练地写出实体类!!

    以上这篇Android项目中实体类entity的作用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

    时间: 2020-04-27

    展开全文
  • 估计很多入门安卓的朋友对entity很困惑,为什么要写实体类?有什么用?写来干什么? 对于实体类的理解我入门的时候也是困惑了好久,后面用多了才慢慢理解,这篇博客就当复习和笔记。 Java中entity(实体类)的写法...
  • Android项目实体类entity的作用

    千次阅读 2017-07-27 11:27:06
    估计很多入门安卓的朋友对entity很困惑,为什么要写实体类?有什么用?写来干什么? 对于实体类的理解我入门的时候也是困惑了好久,后面用多了才慢慢理解,这篇博客就当复习和笔记。Java中entity(实体类)的写法...

    估计很多入门安卓的朋友对entity很困惑,为什么要写实体类?有什么用?写来干什么?
    对于实体类的理解我入门的时候也是困惑了好久,后面用多了才慢慢理解,这篇博客就当复习和笔记。

    Java中entity(实体类)的写法规范

    在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法。entity(实体类)的作用一般是和数据表做映射。所以快速写出规范的entity(实体类)是java开发中一项必不可少的技能。

    在项目中写实体类一般遵循下面的规范:
      1、根据你的设计,定义一组你需要的私有属性。
      2、根据这些属性,创建它们的setter和getter方法。(eclipse等IDE可以自动生成。具体怎么生成?请自行百度。)
      3、提供带参数的构造器和无参数的构造器。
      4、重写父类中的eauals()方法和hashcode()方法。(如果需要涉及到两个对象之间的比较,这两个功能很重要。)

    对Java实体类的众多理解:

    A .就是属性类,通常定义在model层里面

    B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。

      好处:
      1.对对象实体的封装,体现OO思想。
      2.属性可以对字段定义和状态进行判断和过滤
      3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。
    C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句

    D. 就是一个数据库表生成一个类
      这样做对数据库操作起来方便
      编写代码较少 提高效率 可以使程序员专注逻辑关系

    E. 实体类就是把对某一个表的操作全写在一个类中.

    F. 在Java开发中经常要定义一些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度,以  下是别人总结的一些经验。
      一、实体类的名字尽量和数据库的表的名字对应相同。

      二、实体类应该实现java.io.Serializable接口。

      三、实体类应该有个无参的构造方法。

      四、实体类应该有个有参(所有的参数)的构造方法。

      五、实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法。

      六、实体类还应该有个属性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;

      七、属性一般是private类型,方法位public类型,对于数据库自动生成的ID字段对应的属性的set方法应为private。

    G. 实体类中都是实例对象,实例对象在jvm的堆区中开辟了一个该对象引用空间,并且让该引用指向某个实例,类声明只是在jvm的栈去中开辟了一个该对象引用,没有让该引用做任何指向.
      例如 :
      1.String str;
      2.String str = new String (“dgfgg”);
      1中的只是一个引用,说明str应该指向一个String 类型的实例,但还没对str和堆区的实例做具体的指向.也就是说它还没有指向某个实例.
      而2中的即定义了一个引用(str)又对str做了具体的指向,它指向的内容就是后面new出来的String 实例.

    实体类中的构造方法+set方法+get方法:
    构造函数:初始化成员变量

    get,set方法,获取和改变成员变量的值,JavaBean规范规定只使用get/set访问成员变量

    构造函数:你每次写一个Java文件,实际上都写了一个类(创建一个类,jvm就会自动为这个类开辟一块内存空间)。有了类就需要有类对象,要产生类对象就需要构造函数对这个刚刚申请的内存空间做一点事,赋属性值之类的工作。当然,如果你不写,它就默认有一个Class(){}的构造方法出现,当然它什么活也不干。

    你的属性是什么样的?public?private?默认?还是protected?这四种你找教材务必弄懂分清,很有用。如果是private,这种属性不许别的对象改和读,但有时候需要改/读,怎么办?写一个public void setAbc(xxx){}和一个public xxx getAbc(){}就实现外部读写属性的功能了。

    set ,get完全是自我规定的,就是设置初值和获得值的意思.你也可以修改成其他字符.但是用set ,get还是要好些,因为你能通过单词理解你写的代码的意思,方便阅读而已。

    总结:实体是就是Java中的O/R Mapping映射,即数据库中的一个表映射成对应的一个Java类,其中还有一个映射文件。给定一个较复杂的实体关系(如一对一,一对多,多对多),应该熟练地写出实体类!!

    展开全文
  • 以前写项目是先快速创建entity、dao、service再说,其他的包一般...但是最近看了一个国外的开源项目源代码,有一个包叫domain,打开一看里面就是存的实体类,功能和我们平时用的entity是一样的,那为什么要用d...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义到文件的信息、定义文件,输出到c:/hello.txt、信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
  • 数字证书:从文件中读取数字证书,生成文件输入流,输入文件c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax的...
  • java面试宝典

    2013-02-28 16:04:01
    抽象类是否可继承实体类(concrete class)? 12 41、Java 的接口和C++的虚类的相同和不同处。 12 42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请...
  • java面试题

    2018-04-27 19:55:38
    为什么每次请求都要创建一个Action对象? 答:Struts2每次请求的时候都会创建一个action实例,这样会保证线程的安全。Struts1只是在第一次请求的时候创建一个action实例,以后每次相同的请求都直接从内存中去读取,...
  • 其实这个接口也很简单,定义了那么几个方法,说白了就是操作数据库的,为什么要写成泛型的接口,为了就是后面大家的业务有针对性,一个实体一个业务功能。 5。SqlHelper.java 这个最为关键,它肯定是实现了...
  • java面试宝典2012

    2012-12-16 20:43:41
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 135 17.介绍一下Hibernate的二级缓存 135 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • JAVA面试宝典2010

    2011-12-20 16:13:24
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • java 面试题 总结

    2009-09-16 08:45:34
    为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...
  • Java面试宝典-经典

    2015-03-28 21:44:36
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 一个方法,实现字符串的反转,... Object 中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...
  • Java程序员面试宝典pdf

    热门讨论 2013-02-21 13:06:13
    为什么要选择本公司 334 面试题182 你如何看待加班问题的 335 面试题183 自己的最大优缺点是什么 336 面试题184 你希望的待遇为多少 336 面试题185 你认为团队工作和独自干活哪样效率更高 337 面试题186 如果你所处...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • Java面试宝典2012版

    2012-12-03 21:57:42
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message...
  • Java面试宝典2012新版

    2012-06-26 19:20:00
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 17.介绍一下Hibernate的二级缓存 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message 属性, ...
  • Java面试笔试资料大全

    热门讨论 2011-07-22 14:33:56
    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • java基础题 很全面

    2009-05-09 09:24:24
    抽象类是否可继承实体类(concrete class)? 10 27. List, Set, Map是否继承自Collection接口? 10 28. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 10 29. 数组有没有length()...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

为什么java项目都要写实体类

java 订阅