利用反射重写toString()方法
来源:互联网 发布:windows 10显卡是多少 编辑:程序博客网 时间:2024/05/29 15:00
为了方便输出对象,Object类提供了toString()方法。但是该方法的默认值是由类名和哈希码组成的,实用性并不强。通常需要重写该方法以提供更多的信息。本实例使用反射输出类的包、类的名字、类的公共构造方法、类的公共域和类的公共方法。在重写不同类的toString()方法时调用该方法就可以避免多次重写toString()方法。实例运行效果如图
编写类StringUtils,在该类中定义了两个方法:toString()方法用于输出类的公共方法、域等信息,main()方法用来进行测试。代码如下:
package com.mingrisoft.reflection;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;public class StringUtils { @SuppressWarnings("unchecked") public String toString(Object object) { Class clazz = object.getClass();// 获得代表该类的Class对象 StringBuilder sb = new StringBuilder(); // 利用StringBuilder来保存字符串 Package packageName = clazz.getPackage(); // 获得类所在的包 sb.append("包名:" + packageName.getName() + "\t");// 输出类所在的包 String className = clazz.getSimpleName(); // 获得类的简单名称 sb.append("类名:" + className + "\n"); // 输出类的简单名称 sb.append("公共构造方法:\n"); // 获得所有代表构造方法的Constructor数组 Constructor[] constructors = clazz.getDeclaredConstructors(); for (Constructor constructor : constructors) { String modifier = Modifier.toString(constructor.getModifiers());// 获得方法修饰符 if (modifier.contains("public")) {// 查看修饰符是否含有“public” sb.append(constructor.toGenericString() + "\n"); } } sb.append("公共域:\n"); Field[] fields = clazz.getDeclaredFields();// 获得代表所有域的Field数组 for (Field field : fields) { String modifier = Modifier.toString(field.getModifiers()); if (modifier.contains("public")) {// 查看修饰符是否含有“public” sb.append(field.toGenericString() + "\n"); } } sb.append("公共方法:\n"); Method[] methods = clazz.getDeclaredMethods();// 获得代表所有方法的Method[]数组 for (Method method : methods) { String modifier = Modifier.toString(method.getModifiers()); if (modifier.contains("public")) {// 查看修饰符是否含有“public” sb.append(method.toGenericString() + "\n"); } } return sb.toString(); } public static void main(String[] args) { System.out.println(new StringUtils().toString(new Object())); }}
心法领悟:简化toString()方法的重写。
toString()在编写类时基本都需要重写,对于高手而言,可以使用反射来自定义需要的输出结果。对于日常开发,推荐大家使用Commons Lang组件提供的工具类来重写该方法。
0 0
- 利用反射重写toString()方法
- 利用反射重写tostring方法
- 重写toString()方法
- 重写toString方法
- 重写toString方法
- 重写toString()方法
- 重写 toString 方法
- (49)重写toString()方法
- 重写toString方法
- 关于重写toString方法
- 重写对象toString方法
- C# 重写 ToString 方法
- Java 重写tostring方法
- 重写toString方法
- 重写toString方法-日志
- 重写toString()方法
- Java重写toString方法
- 重写toString()方法
- redis允许局域网内访问
- 大话设计模式之观察者模式
- Qt 获取网络gif图片并保存到本地显示
- 程序员,都去写一写前端代码吧
- 瑜伽微信公众号如何轻松搭建微信预约系统
- 利用反射重写toString()方法
- sql语句判断两个时间段是否有交集
- Android搭建简单的socket服务器——基于TCP
- 数据结构3
- redis如何删除过期数据
- ActiveMQ 使用场景
- 第六章:学习dubbo中遇见的问题
- JavaEE开发之Spring中的条件注解、组合注解与元注解
- 忘了哪个大神的博客的滑动刷新带有弹簧效果的ScrollView