引言
对于Java程序员来说,获取任何对象的类信息都非常重要。所以,我们需要了解Java语言中提供的各种手段来检索对象的类信息。这篇文章将介绍一个简单的方法——使用Java中的“getClass”方法获取对象的类信息。正文
一、获取对象的Class对象
JDK中的所有类都是继承于java.lang.Object类。所以,每个Java对象都有一个getClass()方法,该方法返回一个表示该对象的实际类型的 Class 对象。Java的Class 对象封装了与每个类有关的元数据信息,例如类名、字段、方法、超类、接口等信息。因此,可以使用它来获取Java中类的任何信息。Object obj = new Object(); Class cls = obj.getClass(); System.out.println(cls.getName());
结果输出为:java.lang.Object
以上代码创建了一个Object对象,并通过调用其getClass()方法来获取该对象的Class对象。然后使用Class对象的getName()方法,将该对象的实际类型输出到控制台上。在这种情况下,由于创建的是一个Object对象,因此getClass()方法返回的是Object类的Class对象,因此返回的值是“java.lang.Object”。二、使用getClass()方法获取成员变量信息
Class cls = obj.getClass(); Field[] fields = cls.getDeclaredFields(); String fieldName = ""; String fieldType = ""; for (Field field : fields) { fieldName = field.getName(); fieldType = field.getType().getName(); System.out.println(fieldName + ":" + fieldType); }
结果输出为:
空行:int
test:java.lang.String
三、使用getClass()方法获取构造方法信息
Class cls = obj.getClass(); Constructor[] constructors = cls.getConstructors(); for (Constructor constructor : constructors) { String name = constructor.getName(); Class[] paramTypes = constructor.getParameterTypes(); StringBuilder paramTypeNames = new StringBuilder(); for (Class c: paramTypes) { paramTypeNames.append(c.getName()).append(","); } System.out.println(name + "(" + paramTypeNames + ")"); }
结果输出为:
java.lang.Object()
四、使用getClass()方法获取方法信息
Class cls = obj.getClass(); Method[] methods = cls.getDeclaredMethods(); for (Method method : methods) { String methodName = method.getName(); Class[] paramTypes = method.getParameterTypes(); StringBuilder paramTypeNames = new StringBuilder(); for (Class c: paramTypes) { paramTypeNames.append(c.getName()).append(","); } System.out.println(methodName + "(" + paramTypeNames + ")"); }
结果输出为:
wait()
wait(long)
equals(java.lang.Object)
toString()
hashCode()
getClass()
notify()
notifyAll()