java的预定义Class对象的方法
更新时间:2023-12-301. getClass()
getClass()方法是Object类中的方法。它的作用是获取对象的运行时类的类对象。可以用以下的代码来看一下getClass()方法的使用:
Object obj = new String("hello"); Class c = obj.getClass(); System.out.println(c.getName());
执行以上代码,会输出以下结果:
java.lang.String
以上代码中,我们首先创建了一个字符串对象,并使用其getClass()方法得到该对象的类对象。接着我们调用了c的getName()方法,这返回了该类对象的名字。
2. forName()
forName()方法被用于返回表示具有给定字符串名称的类或接口的Class对象。forName()方法是用来加载类进Java虚拟机(JVM)中的,它会进行类的链接,但不会初始化类。这意味着该方法返回的类对象并不会初始化,它只是在JVM中的一个存在的类名。可以用以下的代码来看一下forName()方法的使用:
Class c = Class.forName("java.lang.String"); System.out.println(c.getName());
执行以上代码,会输出以下结果:
java.lang.String
以上代码中,我们首先使用forName()方法得到类对象并赋给c。接着我们调用了c的getName()方法,它返回了该类对象的名字。
3. getDeclaredFields()
getDeclaredFields()方法返回该类所有声明的字段(不含继承的字段),这些字段对象被封装在Field类的实例中。这个方法只包括该类的成员变量,不包括成员数据的成员类和父类的成员变量。可以用以下的代码来看一下getDeclaredFields()方法的使用:
Class c = String.class; Field[] fields = c.getDeclaredFields(); for (Field field : fields) { System.out.println(field.getName()); }
执行以上代码,会输出以下结果:
value hash
以上代码中,我们首先得到一个String类对象,然后使用它的getDeclaredFields()方法得到该类的所有字段信息,接着我们使用一个for循环遍历得到的字段,并输出它的名字。
4. getMethods()
getMethods()方法返回该Class对象所表示的类或接口的所有public方法(包括Object类的public方法),这些方法对象被封装在Method类的实例中。只有那些由getModifier()中public flag位被设置的方法会被返回。这个方法不会返回私有方法、受保护的方法或包私有方法。可以用以下的代码来看一下getMethods()方法的使用:
Class c = String.class; Method[] methods = c.getMethods(); for (Method method : methods) { System.out.println(method.getName()); }
执行以上代码,会输出以下结果:
equals getBytes getChars clone hashCode concat charAt isEmpty substring ...
以上代码中,我们首先得到一个String类对象,然后使用它的getMethods()方法得到该类的所有公有方法信息,接着我们使用一个for循环遍历得到的方法,并输出它的名字。
总结以上所述,我们可以了解到Java中的预定义Class对象的方法非常有用。getClass()方法获取对象的运行时类的类对象,而forName()方法则被用于返回表示具有给定字符串名称的类或接口的Class对象。getDeclaredFields()方法返回该类所有声明的字段,而getMethods()方法则返回该Class对象所表示的类或接口的所有public方法。这些方法极大地方便了在代码中对于对象和类信息的操作和处理。