`
VaxVall
  • 浏览: 20882 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

通过重写toString()方法,反射出某个类中的具体信息

阅读更多
package 测试;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class TestDemo { 
	public String toString(Object obj) {//重写toString()方法
		Class clazz = obj.getClass();
		StringBuilder sb = new StringBuilder();
		
		Package pakName = clazz.getPackage();
		sb.append("包名:"+pakName.getName()+"\t");
		
		String className = clazz.getSimpleName();
		sb.append("类名:"+className+"\n");
		sb.append("公共构造方法:\n");
		
		//获得所有代表构造方法的Constructor数组
		Constructor[] cons = clazz.getDeclaredConstructors();
		for(Constructor constructor : cons) {
			String modifier = Modifier.toString(constructor.getModifiers());//获得修饰符(判断是共有,默认,还是私有)
			if(modifier.contains("public")) {
				sb.append(constructor.toGenericString()+"\n");
			}
		}
		
		sb.append("公共域:\n");
		//获得代表所有域的Field数组
		Field[] fields = clazz.getDeclaredFields();
		for(Field field : fields) {
			String modifier = Modifier.toString(field.getModifiers());
			if(modifier.contains("public")) {//查看修饰符是否有public
				sb.append(field.toGenericString()+"\n");
			}
		}
		
		sb.append("公共方法:\n");
		//获得代表所有方法的Method数组
		Method[] methods = clazz.getDeclaredMethods();
		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 TestDemo().toString(new java.util.Date()));//在此处传入你要反射查询的java类,比如此处查询的是Date()类
	    }
	}
分享到:
评论

相关推荐

    6.注解-introdute.doc

    在`OverrideTest`类中,`toString()`方法前使用了`@Override`,表示该方法是重写`Object`类的`toString()`方法。 2. **@Deprecated**:这个注解用于标记某个方法或类不再推荐使用。当其他代码使用了被`@Deprecated`...

    Java-常见面试题.pdf

    3. 通过反射获取类模板对象,再通过 Class 对象的 newInstance() 方法创建 4. 通过反射获取类模板对象,再 Constructor 对象创建 5. 反序列化的方式创建 final 的作用 final 可以修饰类、方法、变量。 * 修饰类:...

    JAVA_高级特性(hashCode,clone,比较器,Class反射,序列化)

    例如,可以通过 `Class` 类的方法获取类的信息: ```java Class<?> clazz = Person02.class; System.out.println(clazz.getName()); // 输出 "Person02" ``` 还可以使用反射来创建对象和调用方法: ```java ...

    java30个应该掌握的基础

    实现接口意味着类需要提供接口中所有方法的具体实现。例如,`class MyClass implements MyInterface` 表示 `MyClass` 实现了 `MyInterface` 接口。 ### 25. 实现多个接口 Java 支持类实现多个接口。例如,`class ...

    Java面向对象面试题.pdf

    类的返射机制是指 Java 中的反射机制,可以通过反射机制来获取类的信息和调用类的方法。 21. 得到 Class 的三个过程是什么?可以使用 Class.forName 方法、getClass 方法或类字面量来获取 Class 对象。 22. 如何...

    Java面试题以及答案

    - `final`类中的所有成员方法都是`final`的,意味着这些方法不能被重写。 - `final`类中的成员变量如果是`final`的,则其值一旦被初始化就不能被修改。 #### 11. 继承时候类的执行顺序问题,一般都是选择题,问你将会...

    适用于应届毕业生的简单面试问题

    多态可以通过接口实现、继承父类重写方法、同一类中进行方法重载来实现。虚拟机通过动态绑定技术来实现多态,执行期间判断所引用对象的实际类型,根据实际类型调用对应的方法。 接口的意义可以用三个词来概括:规范...

    学习Java的30个基本概念 学习Java的30个基本概念

    抽象类中可以包含抽象方法,抽象方法没有具体的实现,需要被子类覆盖。 #### 14. final关键字 `final`关键字可以用来声明不可变的变量或方法,表示该变量或方法不能被修改。 #### 15. 静态变量与静态方法 静态...

    annotation 详解

    `@Override` 是Java标准库中的一个`Annotation`类型,用于表明某个方法是重写父类中的同名方法。 - **用途** 当使用`@Override`标注一个方法时,如果该方法实际上并未重写父类中的方法,编译器会报错。 - **...

    对象转型和多态1

    3. **getClass()方法**:返回对象的运行时类,可以用来获取对象所属的类信息,常用于反射机制。 ```java Object obj = new Object(); Class<?> clazz = obj.getClass(); // 获取Object类 ``` 4. **toString()...

    Java面试题整理精华

    反射机制允许运行时检查类的信息,包括字段、方法和构造函数,并动态调用方法或创建对象。 #### 20. 类的返射机制中的包及核心类? 反射相关的包是`java.lang.reflect`,核心类包括`Class`、`Constructor`、`Field`...

    Java入门学习笔记

    - Object类是所有Java类的父类,提供了如toString()、equals()等常用方法。 **7.10 封装类** - Java为每种基本数据类型提供了对应的包装类,如Integer、Double等。 **7.11 内部类** - **7.11.1 内部类的分类** ...

    jdkAPI.rar_jdkapi

    注解(Annotation)是一种元数据,可以附加到源代码的不同元素上,提供编译时和运行时的信息,如@Deprecated表示某个方法已过时,@Override表明子类方法重写父类方法。 八、泛型 Java 5引入了泛型,提高了类型安全...

    Java企业面试题整理及答案

    可以通过反射机制中的 `Method` 类来调用类中的方法。首先获取 `Method` 对象,然后使用 `invoke()` 方法来执行该方法。 **23. 如何将数值型字符转换为数字(Integer,Double)?** 可以使用 `Integer.parseInt()`...

    JAVA面试题

    使用反射中的`Method`对象的`invoke()`方法来调用类中的方法。 #### 23. 如何将数值型字符转换为数字(Integer,Double)? 可以使用`Character.getNumericValue(char)`方法或者`Integer.parseInt(String)`、`...

    java必备的经典面试题

    - 使用`Method`类的`invoke()`方法,需要先通过反射获取`Method`对象。 #### 23. 如何将数值型字符转换为数字(Integer,Double)? - 可以使用`Integer.parseInt(String s)`和`Double.parseDouble(String s)`等...

    面试相关问题

    Java反射机制允许程序在运行时获取类的信息(如字段、方法等)并操作对象,增强了程序的灵活性和可扩展性。 #### 22. Object类的方法 Java中的所有类都直接或间接继承自`Object`类,该类提供了许多常用的方法,如:...

    java知识点总结

    - **泛型**:允许在类、接口和方法中使用类型参数,从而实现代码复用和类型安全。 - 泛型在编译时被擦除,但在运行时仍然保持类型信息。 ##### 2.4 异常 (EXCEPTION) - **异常处理**:Java中异常处理机制的核心是...

Global site tag (gtag.js) - Google Analytics