一种公认提供toString的方法_JAVA核心技术卷轴Ⅰ
2024-10-13 15:27:21
从JAVA核心技术卷轴Ⅰ:基础知识中整理得到。
import java.lang.reflect.AccessibleObject; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; /** * 一种公认提供toString的方法 */ public class TestToString { private List<Object> visited = new ArrayList<Object>(); public String toString(Object obj) { if (obj == null) return "null"; if (visited.contains(obj)) return "..."; visited.add(obj); Class<?> c = obj.getClass(); if (c == String.class) return (String) obj; if (c.isArray()) { String r = c.getComponentType() + "[]{"; for (int i = 0; i < Array.getLength(obj); i++) { if (i > 0) r += ","; Object value = Array.get(obj, i); if (c.getComponentType().isPrimitive()) r += value; else r += toString(value); } return r + "}"; } String r = c.getName(); do { r += "["; Field[] fileds = c.getDeclaredFields(); AccessibleObject.setAccessible(fileds, true); for (Field field : fileds) { if (!Modifier.isStatic(field.getModifiers())) { if (!r.endsWith("[")) r += ","; r += field.getName() + "="; try { Class<?> t = field.getType(); Object val = field.get(obj); if (t.isPrimitive()) r += val; else r += toString(val); } catch (Exception e) { e.printStackTrace(); } } } r += "]"; c = c.getSuperclass(); } while (c != null); return r; } public static void main(String[] args) { List<Integer> values = new ArrayList<Integer>(); for (int i = 0; i < 6; i++) { values.add(i * i); } System.err.println(new TestToString().toString(values)); } }
最新文章
- a标签 不触发 目标链接
- Fix the iOS code signing issue when using Jenkins
- JS操作iframe
- Hibernate占位符?和:及JPA
- [daily][CentOS][yum] 删除包的同时一同清理掉安装时一起装进来的依赖包
- Div 自适应屏幕大小
- Codevs No.1287 矩阵乘法
- 【项目】git的部署使用
- Error opening zip file or JAR manifest missing : D:\play-1.2.5/framework/play-1.2.5.jar
- Fedora 20 Gnome安装及配置记录
- regular expression tutorial
- C#邮件发送开发经本人测试通过
- Python的迭代器与生成器
- 201521123050 《Java程序设计》第14周学习总结
- redis+thinkphp5的注册、登陆、关注基础例子
- Python分页组件
- 《使用python进行数据分析》
- Silverlight 预定义颜色速查表
- phpmyadmin配置文件权限错误,不应任何用户都能修改
- HUD 2639 Bone Collector II
热门文章
- filter和listener的生命周期
- 去掉Bootstrap fileinput缩略图上面的上传删除按钮?
- hibernate实体对象的三种状态:自由状态,持久状态,游离状态.
- 解决问题redis问题:ERR Client sent AUTH, but no password is set
- java连接sqlserver2008
- JavaScript 字符串(String)对象
- Vue 踩坑记
- Android开发之手把手教你写ButterKnife框架(二)
- Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程
- Android简易实战教程--第三十一话《自定义土司》