toString输出父类的属性

一、需求

目前的toString只会打印当前类的属性,希望在打印类信息的时候,如果类有父类,则把父类的所有信息也打印出来。

二、方案

1、使用Lombok

/**
 * @author linzp
 * @version 1.0.0
 * CreateDate 2020/9/23 14:05
 */
@Data
@ToString(callSuper = true)
@TableName("user")
public class User extends BaseEntity implements Serializable {

    private static final long serialVersionUID = -3952430900388756368L;

    /**
     * 如果字段名称和实体名称不一致的话,TableField可以进行字段值的映射,
     */
    @TableField("name")
    private String userName;

    @TableField("age")
    private String age;
}

如上,通过在类上加 @ToString(callSuper = true) 即可

2、手动重写 toString方法,调用父类的toString打印信息

/**
 * @author linzp
 * @version 1.0.0
 * CreateDate 2020/9/23 14:05
 */
@Data
@TableName("user")
public class User extends BaseEntity implements Serializable {

    private static final long serialVersionUID = -3952430900388756368L;

    /**
     * 如果字段名称和实体名称不一致的话,TableField可以进行字段值的映射,
     */
    @TableField("name")
    private String userName;

    @TableField("age")
    private String age;

    @Override
    public String toString() {
        return super.toString() + "User{" +
                "userName='" + userName + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

这里如果手动重写了,方法优先级会比Lombok的高。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
IO ============================================================================================================================================= * Input /Output 输入 输出 保存文件 读取文件 java.io 包 java.io.File ============================================================================================ *表示磁盘文件或目录的路径 *可以表示一个不存在的路径 创建实例 ------------------------------------- 1 File f=new File("d:/abc") (d:\\abc) 2 File f=new File ("目录","文件名") 创建一个 File 封装对象 可以不存在 方法 -------------------------------------------- 文件、目录属性方法 文件、目录属性 canRead() canWrite() canExecute() 是否可读可写可执行 isHidden() 是否隐藏文件 exists() 表示的路径是否存在 getAbsolutePath() 完整路径 getName() 文件名 getParent() 父目录 lastModified() 最后修改时间,毫秒值 length() 文件字节量,对目录无效 isDirectory() 是否文件夹 isFile() 是否文件 getTotalSpace() 空间总大小 getFreeSpace() 可用空间 文件、目录操作 createNewFile() 创建文件 delete() 删除文件或“空目录” mkdir() 创建单层目录 mkdirs() 创建多层目录 renameTo() 改名、移动 *) 创建删除重命名方法返回 boolean,表示操作是否成功 File.createTempFile() 在系统临时目录创建临时文件 目录列表 list() 返回 String[],包含子文件、子目录名称 listFiles() 返回 File[],包含子文件、子目录的 File 对象 list(FilenameFilter) listFiles(FilenameFilter) listFiles(FileFilter) 只列出符合过滤条件的文件、目录, 参数: 外接的过滤器 private static void test1() { // File f=new File("d:/rand.txt"); // File f=new File("d:/abad"); File f=new File("d:/scq"); System.out.println("是否可读:"+f.canRead()); System.out.println("是否可写:"+f.canWrite()); System.out.println("是否是隐藏:"+f.isHidden()); System.out.println("文件的绝对路径:"+f.getAbsolutePath()); System.out.println("获得文件名:"+f.getName()); System.out.println("获得父类目录名:"+f.getParent()); System.out.println("获得最后一次修改时间:"+f.lastModified()); System.out.println("文件字节量:"+f.length()); System.out.println("是否是目录:"+f.isDirectory()); System.out.println("是否是文件:"+f.isFile()); System.out.println("获得总空间大小:"+f.getTotalSpace()); System.out.println("获得剩余空间大小:"+f.getFreeSpace()); } 文件目录操作方法 public class Test2 { /** * @author aibin zhang * @param args * @throws IOException */ public static void main(String[] args) throws IOException { test4(); } //创建临时文件 文件名称不能太短 private static void test4() throws IOException { File f = File.createTempFile("abc", ".txt"); System.out.println(f.getAbsolutePath()); } // 测试renameto方法 移动和更改问价名 private static void test3() { File f1 = new File("d:/rand.txt"); File f2 = new File("d:/r.txt"); // 刚改前查看文件是否存在 System.out.println(f1.getName() + "是否存在" + f1.exists()); System.out.println(f2.getName() + "是否存在" + f2.exists()); // 使用renameto方法 System.out.println("文件名是否更改成功:" + f1.renameTo(f2)); // 改名以后的的状态 System.out.println(f1.getName() + "是否存在" + f1.exists()); System.out.println(f2.getName() + "是否存在" + f2.exists()); } // 测试创建单层目录mkdir和多层目录mkdirs private static void test2() { File f = new File("d:/dir1/dir2"); if (f.exists()) { System.out.println("是否成功删除:" + f.delete()); // 获得父类目录文件对象实例调用delete方法删除 f.getParentFile().delete(); } else { System.out.println("是否成功创建:" + f.mkdirs()); } } // 测试创建和删除文件 private static void test1() throws IOException { File f = new File("d:/f1.dlkjkajsdklgjexe"); if (f.exists()) {// 是够存在此文件 System.out.println("是否成功删除:" + f.delete()); } else { System.out.println("是否成功创建:" + f.createNewFile()); } } } 目录列表 --------------------------------------------------------------------------------- list listFlie list(FilenameFilter ) 文件名称过滤器 listFiles(FilenameFilter) 文件属性过滤器 public class Test1 { public static void main(String[] args) { test1(); } /////////////////////2014-8-23文件筛选操作 private static void test1() { File f=new File("D:/bookandimage"); String [] name=f.list(new FilenameFilter() { public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".zip"); } }); File [] files=f.listFiles(new FileFilter() { public boolean accept(File f) { return f.length()>=20*1024; } }); for (File file : files) { int len=(int) (file.length()/1024); System.out.println(file.getName()+"---"+len+"KB"); } for( String na : name) { System.out.println(na); } } } ///////////查看目录大小 // 主要用到的是 listfiles isFile package tarena.day1802; import java.io.File; import java.util.Scanner; public class Test1 { public static void main(String[] args) { System.out.println("输入目录:"); String path=new Scanner(System.in).nextLine(); File dir=new File(path); long len=dirLength(dir); System.out.println(len/1024+"KB"); } private static long dirLength(File dir) { /* * 1 定义累加变量 long len * 2 获得目录列表 dir.listFiles赋给files * 3 判断files数组是否是null值 * 如果是null 返回return 0; * 5遍历从数组files取出的每个对象 赋给f * 6判断f是文件 * 获得文件大小累加到len * 否则是文件夹 * 再调用自身方法 dirLength * 求文件夹大小累加到len * return len; * */ long len=0; File [] files=dir.listFiles(); if(files==null){ return 0; } for (File file : files) { if(file.isFile()){ len+=file.length(); }else { len+=dirLength(file); } } return len; } } ////删除目录 public class Test1 { public static void main(String[] args) { System.out.println("输入目录名"); String path=new Scanner(System.in).nextLine(); File dir=new File(path); boolean success=dirDelete(dir); if(success){ System.out.println("删除成功!"); }else{ System.out.println("删除失败!!"); } } private static boolean dirDelete(File dir) { /* * 2 获得目录列表 dir.listFiles赋给files * 3 判断files数组是否是null值 * 并返货尝试直接删除是否成功; * 5遍历从数组files取出的每个对象 赋给f * 6判断f是文件 * 直接删除f * 如果删除返回false * 否则是文件夹 * 再调用自身方法dirDelete来删除文件夹f * 如果失败则返回false * 遍历结束 删除 dir * 如果失败则返回 * */ File[] files = dir.listFiles(); if(files==null)return dir.delete(); for (File file : files) { if(file.isFile()){ if(!file.delete())return false; }else{ if(!dirDelete(file))return false; } } return dir.delete(); } } ================================================================================== java.io.RandomAccessFile --------------------------------------------------------------- // ***用来读写文件 //将一个文件看做是一个字节数组 //用下标值访问摸个位置的字节值 创建实例 ----------------------- 1 RandomAccessFile raf= new RandomAccessFile(文件,“r”) r 只读模式 1 RandomAccessFile raf= new RandomAccessFile(文件,“rw”) r 读写模式 方法 ------------------------ 写字节 write() -------- -------- write (int b) 将int 四字节中的末尾字节 写到文件里 【1】【2】【3】【4】 --》【4】 write ( byte [] b) 将数组中所有字节值 全部写到文件 write (byte [] buf,int start ,int n) 将数组中的start开始位置,n个范围中的字节值,写到文件 读字节 read() --------- --------- read() 读取一个字节值,再前面补三个0字节 变成 int 类型 [4] --> [1][2][3][4] 如果没有数据,返回 -1; read ( byte[] buf) 根据数组的长度读取一批字节值,放入数组 一次读取的长度是数组的长度 返回每次存放到数组中的字节数量 如果没有数据 则返回 -1; seek(int position) 将指针定位到指定位置 public class Test1 { public static void main(String[] args) throws IOException{ /* * 如果文件不存在 自动新年检文件 * 如果文件夹不存在则出现FileNotFoundException、 * * */ RandomAccessFile raf=new RandomAccessFile("d:/f2.mp3", "rw"); //写入单个字节值 raf.write(97); raf.write(98); raf.write(99); raf.write(100); //写入一组数组字节 byte [] buf={101,102,103,104,105,106}; raf.write(buf); raf.write(buf,2,3); //调用seek 将指针调回 raf.seek(0); //读取文件字节 //单个字节读取 int b;//定义一个变量 int b 用来保存每次读取的字节值 while ((b=raf.read())!=-1){ System.out.println(b); } raf.seek(0); buf=new byte[5]; int n ; //用来保存每次读取或放入数组中的字节数量 while((n=raf.read(buf))!=-1){ System.out.print(n+"--"); System.out.println(Arrays.toString(buf)); // while循环最后会打印出重复数据 //for循环可以避免打印出重复数据 for (int i = 0; i < n; i++) { System.out.println(buf[i]); } } //关闭数据连接 raf.close(); } } print out 97 98 99 100 101 102 103 104 105 106 103 104 105 5--[97, 98, 99, 100, 101] 97 98 99 100 101 5--[102, 103, 104, 105, 106] 102 103 104 105 106 3--[103, 104, 105, 105, 106] 103 104 105 writeInt (int b ) 输出 int 的四个字节 writeDouble(double b) 输出 double 的八个字节 writeUTF(String s) 先输出2个字节 表示字符串的字节长度 在输出字符串的字节数据 readInt() 读取4个字节作为一个int值 readDouble () 读取8个字节作为一个double值 readUTF() 先读取2个字节来确定字符创长度 在读取字符串的字节值 EOFException read读取异常 public class Test2 { public static void main(String[] args) throws Exception { test1(); } private static void test1() throws Exception { RandomAccessFile raf=new RandomAccessFile("d:/f3.java", "rw"); raf.write(97); raf.writeInt(97); raf.writeDouble(3.14); raf.writeUTF("a中"); raf.seek(0); //从头到尾单字节输出 int b; while((b=raf.read())!=-1){ System.out.println(b); } System.out.println("****************************"); //从头到尾批量输出 raf.seek(0); byte [] buf=new byte[5]; while((b=raf.read(buf))!=-1){ System.out.println(b); System.out.println(Arrays.toString(buf)); } // //////////////////////////////////////////////// raf.seek(0); System.out.println("*********************************"); System.out.println("*********************************"); //read 是单字节读取 System.out.println(raf.read()); //读取int型数据 System.out.println(raf.readInt()); //读取Double类型数据 System.out.println(raf.readDouble()); //读取String类型数据 System.out.println(raf.readUTF()); raf.close(); } } getFilePointer() 获得指针当前位置 setLength(字节长度); 事先给数据把空间留足 可以将数据截取处理为指定长度 可以扩大数据物理空间为指定长度 -------------------------------------------------------------------------------- public class Test3 { /**@author aibin zhang * @param args */ public static void main(String[] args) { test1(); } private static void test1() { File f=new File("D:/bookandimage"); //转换成list String数组存放文件名称 String[] s=f.list(); //转换成listFiles file数组 File [] files=f.listFiles(); for (String s1 : s) { System.out.println(s1); } System.out.println("************************"); for (File file : files) { int l=(int) file.length()/1024/1024; System.out.println(file.getName()+"--"+l+"MB"); } } } 字段摘要 static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 static char pathSeparatorChar 与系统有关的路径分隔符。 static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 static char separatorChar 与系统有关的默认名称分隔符。 构造方法摘要 File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 方法摘要 boolean canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。 boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。 boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。 int compareTo(File pathname) 按字母顺序比较两个抽象路径名。 boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 static File createTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 static File createTempFile(String prefix, String suffix, File directory) 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 boolean delete() 删除此抽象路径名表示的文件或目录。 void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 boolean equals(Object obj) 测试此抽象路径名与给定对象是否相等。 boolean exists() 测试此抽象路径名表示的文件或目录是否存在。 File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。 String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 File getCanonicalFile() 返回此抽象路径名的规范形式。 String getCanonicalPath() 返回此抽象路径名的规范路径名字符串。 long getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。 String getName() 返回由此抽象路径名表示的文件或目录的名称。 String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 String getPath() 将此抽象路径名转换为一个路径名字符串。 long getTotalSpace() 返回此抽象路径名指定的分区大小。 long getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。 int hashCode() 计算此抽象路径名的哈希码。 boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。 boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。 long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。 long length() 返回由此抽象路径名表示的文件的长度。 String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 static File[] listRoots() 列出可用的文件系统根。 boolean mkdir() 创建此抽象路径名指定的目录。 boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。 boolean setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。 boolean setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。 boolean setLastModified(long time) 设置此抽象路径名指定的文件或目录的最后一次修改时间。 boolean setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。 boolean setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。 boolean setReadOnly() 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。 boolean setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。 boolean setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。 String toString() 返回此抽象路径名的路径名字符串。 URI toURI() 构造一个表示此抽象路径名的 file: URI。
本实验主要为基于继承关系改进学生选课模拟系统,即在实验二的基础上做继承变动 (1)新建一个 package 包,将原程序中需要被继承的父类提取出来 (2)在子类中运用继承关键字 extends,调用继承父类中方法、数据,使用关键字 super()直接调用父类数据 此报告为在实验二基础上作简单修改,主要内容如下: 实验目的 掌握权限访问控制修饰符的使用 掌握继承的使用 业务要求 保持实验二报告 测试实体类分别放在不同的 package 中,验证权限访问控制、继承后属性及方法的可见性 实验过程 1、Faculty 类编写: (1)设定课程属性 2、Student 类编写: (2)设定所选课程、选课数量两个属性 (4)编写 chooseCourse()方法用于学生选课,实现根据字符串及选课数量的判断,按顺序将被退课的课程属性置零,并让该函数每被调用一次就让调用对象的选课数量属性值减一 (5)编写 quitCourse()用于学生退课 (6)编写 transition()方法用于将主方法中被操作的“形式学生对象”的各课程值赋值给登录的实际学生 (7)重写方法 toString(),用于输出该学生选了哪些课 3、Test 主方法编写: (1)设定属性值 tuike,用于判断学生是否退课 (2)实例化若干个 Faculty、Student、course 对象 (3)调用第三方库实例化 Scanner 对象 (4)设置永真循环 (5)调用 Student 类的 toString 方法,输出所有选课名称 4、Personnel 被继承父类: 将其移至新建 package 中并在所需继承的类中添加继承关键字 extends、super() 5、course 被继承父类: (1)设定编号、课程名称、上课地点、时间、教授老师属性 (2)编写构造方法,使实例化对象时即可完成属性赋值 (3)重写方法 toString(),用于输出课程详细信息 (4)将其移至新建 package 中并在所需继承的类中添加继承关键字 extends、super()

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林志鹏JAVA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值